"; var_dump($match, $url, $o); killme();
+
+ if ($o->type=="error") return $match[0];
+
+ $html = oembed_format_object($o);
+ return $html; //oembed_iframe($html,$o->width,$o->height);
+
+}
+
+
// BBcode 2 HTML was written by WAY2WEB.net
- // extended to work with Mistpark/Friendika - Mike Macgirvin
+ // extended to work with Mistpark/Friendica - Mike Macgirvin
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.
+
+ $ev = bbtoevent($Text);
+
+
// Replace any html brackets with HTML Entities to prevent executing HTML or script
// Don't use strip_tags here because it breaks [url] search by replacing & with amp
@@ -27,81 +68,87 @@ function bbcode($Text,$preserve_nl = false) {
if($preserve_nl)
$Text = str_replace(array("\n","\r"), array('',''),$Text);
- // 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.
-
- $ev = bbtoevent($Text);
// Set up the parameters for a URL search string
$URLSearchString = "^\[\]";
// Set up the parameters for a MAIL search string
$MAILSearchString = $URLSearchString;
- // Perform URL Search
+ // Perform URL Search
- $Text = preg_replace("/([^\]\=]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'\%\$\!\+\,]+)/", ' $2', $Text);
+ $Text = preg_replace("/([^\]\=]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1$2', $Text);
+
+ $Text = preg_replace_callback("/\[bookmark\=([^\]]*)\].*?\[\/bookmark\]/ism",'tryoembed',$Text);
+ $Text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'[url=$1]$2[/url]',$Text);
- $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '$1', $Text);
- $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.*?)\[/url\])", '$2', $Text);
- //$Text = preg_replace("(\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '$2', $Text);
+ $Text = preg_replace_callback("/\[url\]([$URLSearchString]*)\[\/url\]/ism",'tryoembed',$Text);
+ $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '$1', $Text);
+ $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$2', $Text);
+ //$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", '$2', $Text);
// Perform MAIL Search
- $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '$1', $Text);
+ $Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '$1', $Text);
$Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '$2', $Text);
// Check for bold text
- $Text = preg_replace("(\[b\](.*?)\[\/b\])is",'$1',$Text);
+ $Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'$1',$Text);
// Check for Italics text
- $Text = preg_replace("(\[i\](.*?)\[\/i\])is",'$1',$Text);
+ $Text = preg_replace("(\[i\](.*?)\[\/i\])ism",'$1',$Text);
// Check for Underline text
- $Text = preg_replace("(\[u\](.*?)\[\/u\])is",'$1',$Text);
+ $Text = preg_replace("(\[u\](.*?)\[\/u\])ism",'$1',$Text);
// Check for strike-through text
- $Text = preg_replace("(\[s\](.*?)\[\/s\])is",'$1',$Text);
+ $Text = preg_replace("(\[s\](.*?)\[\/s\])ism",'$1',$Text);
// Check for over-line text
- $Text = preg_replace("(\[o\](.*?)\[\/o\])is",'$1',$Text);
+ $Text = preg_replace("(\[o\](.*?)\[\/o\])ism",'$1',$Text);
// Check for colored text
- $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])is","$2",$Text);
+ $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])ism","$2",$Text);
// Check for sized text
- $Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])is","$2",$Text);
+ $Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])ism","$2",$Text);
// Check for list text
- $Text = preg_replace("/\[list\](.*?)\[\/list\]/is", '