X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbbcode.php;h=5218a06e85a39e948f0261326d5fe613d44ffa5b;hb=bef8f95ef3e638cb843810ed68cd9617e6e2cc48;hp=8c565add6ccceff9a86da833822b9485e5716589;hpb=2765b0ba4145dd58e49caa74b780dd6c19d7551c;p=friendica.git diff --git a/include/bbcode.php b/include/bbcode.php index 8c565add6c..5218a06e85 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -11,6 +11,7 @@ function stripcode_br_cb($s) { function tryoembed($match){ $url = ((count($match)==2)?$match[1]:$match[2]); + logger("tryoembed: $url"); $o = oembed_fetch_url($url); @@ -30,6 +31,24 @@ function tryoembed($match){ function bbcode($Text,$preserve_nl = false) { + + // Extract a single private image which uses data url's since preg has issues with + // large data sizes. Stash it away while we do bbcode conversion, and then put it back + // in after we've done all the regex matching. We cannot use any preg functions to do this. + + $saved_image = ''; + $img_start = strpos($Text,'[img]data:'); + $img_end = strpos($Text,'[/img]'); + + if($img_start !== false && $img_end !== false && $img_end > $img_start) { + $start_fragment = substr($Text,0,$img_start); + $img_start += strlen('[img]'); + $saved_image = substr($Text,$img_start,$img_end - $img_start); + $end_fragment = substr($Text,$img_end + strlen('[/img]')); +// logger('saved_image: ' . $saved_image,LOGGER_DEBUG); + $Text = $start_fragment . '[$#saved_image#$]' . $end_fragment; + } + // If we find any event code, turn it into an event. // After we're finished processing the bbcode we'll // replace all of the event code with a reformatted version. @@ -99,12 +118,16 @@ function bbcode($Text,$preserve_nl = false) { if(stristr($Text,'[/list]')) $Text = str_replace("[*]", "
  • ", $Text); - $Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '' ,$Text); - $Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '' ,$Text); - $Text = preg_replace("/\[list=i\](.*?)\[\/list\]/sm",'' ,$Text); - $Text = preg_replace("/\[list=I\](.*?)\[\/list\]/sm", '' ,$Text); - $Text = preg_replace("/\[list=a\](.*?)\[\/list\]/sm", '' ,$Text); - $Text = preg_replace("/\[list=A\](.*?)\[\/list\]/sm", '' ,$Text); + if(stristr($Text,'[/list]')) + $Text = str_replace("[*]", "
  • ", $Text); + + $Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '' ,$Text); + $Text = preg_replace("/\[list=\](.*?)\[\/list\]/ism", '' ,$Text); + $Text = preg_replace("/\[list=1\](.*?)\[\/list\]/ism", '' ,$Text); + $Text = preg_replace("/\[list=i\](.*?)\[\/list\]/sm",'' ,$Text); + $Text = preg_replace("/\[list=I\](.*?)\[\/list\]/sm", '' ,$Text); + $Text = preg_replace("/\[list=a\](.*?)\[\/list\]/sm", '' ,$Text); + $Text = preg_replace("/\[list=A\](.*?)\[\/list\]/sm", '' ,$Text); $Text = preg_replace("/\[li\](.*?)\[\/li\]/sm", '
  • $1
  • ' ,$Text); $Text = preg_replace("/\[td\](.*?)\[\/td\]/sm", '$1' ,$Text); @@ -158,22 +181,18 @@ function bbcode($Text,$preserve_nl = false) { $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '', $Text); - /*if (get_pconfig(local_user(), 'oembed', 'use_for_youtube' )==1){ - // use oembed for youtube links - $Text = preg_replace("/\[youtube\]/",'[embed]',$Text); - $Text = preg_replace("/\[\/youtube\]/",'[/embed]',$Text); - } else {*/ - // Youtube extensions - $Text = preg_replace_callback("/\[youtube\](https?:\/\/www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text); - $Text = preg_replace_callback("/\[youtube\](https?:\/\/youtu.be\/.*?)\[\/youtube\]/ism",'tryoembed',$Text); + // Youtube extensions + $Text = preg_replace_callback("/\[youtube\](https?:\/\/www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text); + $Text = preg_replace_callback("/\[youtube\](www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text); + $Text = preg_replace_callback("/\[youtube\](https?:\/\/youtu.be\/.*?)\[\/youtube\]/ism",'tryoembed',$Text); - $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); + $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); + $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); + $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '', $Text); - //} + $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '', $Text); + $Text = preg_replace_callback("/\[vimeo\](https?:\/\/player.vimeo.com\/video\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); $Text = preg_replace_callback("/\[vimeo\](https?:\/\/vimeo.com\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); @@ -202,7 +221,9 @@ function bbcode($Text,$preserve_nl = false) { // fix any escaped ampersands that may have been converted into links $Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text); - + if(strlen($saved_image)) + $Text = str_replace('[$#saved_image#$]','' . t('Image/photo') . '',$Text); + call_hooks('bbcode',$Text); return $Text;