diff options
author | marijus <mario@localhost.localdomain> | 2014-01-30 00:30:55 +0100 |
---|---|---|
committer | marijus <mario@localhost.localdomain> | 2014-01-30 00:30:55 +0100 |
commit | eb02e6605ca35924acda98f6a75c90999c3d561f (patch) | |
tree | 3f1619adb5c4f847c81b29ff00a0809317528238 /include/text.php | |
parent | 75022367e5c3ecec24ec66acff162d6dd534486c (diff) | |
parent | 9df2082b841044dec42244974c2fc94bf8617675 (diff) | |
download | volse-hubzilla-eb02e6605ca35924acda98f6a75c90999c3d561f.tar.gz volse-hubzilla-eb02e6605ca35924acda98f6a75c90999c3d561f.tar.bz2 volse-hubzilla-eb02e6605ca35924acda98f6a75c90999c3d561f.zip |
Merge branch 'master' of https://github.com/friendica/red
Diffstat (limited to 'include/text.php')
-rwxr-xr-x | include/text.php | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/include/text.php b/include/text.php index a459296cb..cf68ee121 100755 --- a/include/text.php +++ b/include/text.php @@ -871,8 +871,8 @@ function get_mood_verbs() { * Returns string * * It is expected that this function will be called using HTML text. - * We will escape text between HTML pre and code blocks from being - * processed. + * We will escape text between HTML pre and code blocks, and HTML attributes + * (such as urls) from being processed. * * At a higher level, the bbcode [nosmile] tag can be used to prevent this * function from being executed by the prepare_text() routine when preparing @@ -889,9 +889,8 @@ function smilies($s, $sample = false) { || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) return $s; - $s = preg_replace_callback('/<pre>(.*?)<\/pre>/ism','smile_encode',$s); - $s = preg_replace_callback('/<code>(.*?)<\/code>/ism','smile_encode',$s); -// $s = preg_replace_callback('/<(.*?)>/ism','smile_encode',$s); + $s = preg_replace_callback('{<(pre|code)>(?<target>.*?)</\1>}ism','smile_encode',$s); + $s = preg_replace_callback('/<[a-z]+ (?<target>.*?)>/ism','smile_encode',$s); $texts = array( '<3', @@ -982,20 +981,20 @@ function smilies($s, $sample = false) { $s = str_replace($params['texts'],$params['icons'],$params['string']); } - $s = preg_replace_callback('/<pre>(.*?)<\/pre>/ism','smile_decode',$s); - $s = preg_replace_callback('/<code>(.*?)<\/code>/ism','smile_decode',$s); -// $s = preg_replace_callback('/<(.*?)>/s','smile_decode',$s); + $s = preg_replace_callback( + '/<!--base64:(.*?)-->/ism', + function ($m) { return base64url_decode($m[1]); }, + $s + ); return $s; } -function smile_encode($m) { - return(str_replace($m[1],base64url_encode($m[1]),$m[0])); -} -function smile_decode($m) { - return(str_replace($m[1],base64url_decode($m[1]),$m[0])); +function smile_encode($m) { + $cleartext = $m['target']; + return str_replace($cleartext,'<!--base64:' . base64url_encode($cleartext) . '-->',$m[0]); } // expand <3333 to the correct number of hearts |