X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbbcode.php;h=ef4a9aa9ba3462747f5ba5a30d69e565e77c077c;hb=58399c854fbf8d52ad79eb2b1d9300e9bb44331c;hp=6f22d1970257ac9d0f9d4700640c3f3cb4180aa9;hpb=597e96e1565614acbde336f67c195ef61cae90c0;p=friendica.git diff --git a/include/bbcode.php b/include/bbcode.php index 6f22d19702..ef4a9aa9ba 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -47,6 +47,30 @@ function bb_unspacefy_and_trim($st) { return $unspacefied; } +function bb_find_open_close($s, $open, $close, $occurance = 1) { + + if($occurance < 1) + $occurance = 1; + + $start_pos = -1; + for($i = 1; $i <= $occurance; $i++) { + if( $start_pos !== false) + $start_pos = strpos($s, $open, $start_pos + 1); + } + + if( $start_pos === false) + return false; + + $end_pos = strpos($s, $close, $start_pos); + + if( $end_pos === false) + return false; + + $res = array( 'start' => $start_pos, 'end' => $end_pos ); + + return $res; +} + function get_bb_tag_pos($s, $name, $occurance = 1) { if($occurance < 1) @@ -174,10 +198,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $a = get_app(); - // Move all spaces out of the tags - $Text = preg_replace("/\[(\w*)\](\s*)/ism", '$2[$1]', $Text); - $Text = preg_replace("/(\s*)\[\/(\w*)\]/ism", '[/$2]$1', $Text); - // Hide all [noparse] contained bbtags by spacefying them // POSSIBLE BUG --> Will the 'preg' functions crash if there's an embedded image? @@ -186,6 +206,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_spacefy',$Text); + // Move all spaces out of the tags + $Text = preg_replace("/\[(\w*)\](\s*)/ism", '$2[$1]', $Text); + $Text = preg_replace("/(\s*)\[\/(\w*)\]/ism", '[/$2]$1', $Text); + // Extract the private images which use data url's since preg has issues with // large data sizes. Stash them away while we do bbcode conversion, and then put them back // in after we've done all the regex matching. We cannot use any preg functions to do this.