diff options
-rwxr-xr-x | include/items.php | 11 | ||||
-rw-r--r-- | mod/item.php | 2 | ||||
-rw-r--r-- | version.inc | 2 |
3 files changed, 13 insertions, 2 deletions
diff --git a/include/items.php b/include/items.php index efc2322d5..c69ac2c84 100755 --- a/include/items.php +++ b/include/items.php @@ -167,6 +167,17 @@ function red_zrl_callback($matches) { } +// If we've got a url or zrl tag with a naked url somewhere in the link text, +// escape it with quotes unless the naked url is a linked photo. + +function red_escape_zrl_callback($matches) { + + // Uncertain why the url/zrl forms weren't picked up by the non-greedy regex. + + if((strpos($matches[3],'zmg') !== false) || (strpos($matches[3],'img') !== false) || (strpos($matches[3],'zrl') !== false) || (strpos($matches[3],'url') !== false)) + return $matches[0]; + return '[' . $matches[1] . 'rl' . $matches[2] . ']' . $matches[3] . '"' . $matches[4] . '"' . $matches[5] . '[/' . $matches[6] . 'rl]'; +} /** * @function post_activity_item($arr) diff --git a/mod/item.php b/mod/item.php index 19d771832..69cc624ea 100644 --- a/mod/item.php +++ b/mod/item.php @@ -429,7 +429,7 @@ function item_post(&$a) { * otherwise http://elsewhere.com becomes #^[url=http://elsewhere.com]http://elsewhere.com[/url] */ - $body = preg_replace('/\[([uz])rl(.*?)\](.*?)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)(.*?)\[\/([uz])rl\]/ism','[$1rl$2]$3"$4"$5[/$6rl]',$body); + $body = preg_replace_callback('/\[([uz])rl(.*?)\](.*?)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)(.*?)\[\/([uz])rl\]/ism','red_escape_zrl_callback',$body); $body = preg_replace_callback("/([^\]\='".'"'."]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)/ism", 'red_zrl_callback', $body); diff --git a/version.inc b/version.inc index bd1fa0985..fc4e28cab 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2014-02-08.582 +2014-02-09.583 |