diff options
author | toclimb <toclimb@misanthrozot.com> | 2014-02-02 14:52:00 +0100 |
---|---|---|
committer | toclimb <toclimb@misanthrozot.com> | 2014-02-02 14:52:00 +0100 |
commit | ba6178bef316f706874c03e5b66343d461f87d4a (patch) | |
tree | 1c8a0f7202eb9934aee51609eefbd3fe3633f7eb /include | |
parent | e83419b53e27078867f8449f476d87b064b9d502 (diff) | |
download | volse-hubzilla-ba6178bef316f706874c03e5b66343d461f87d4a.tar.gz volse-hubzilla-ba6178bef316f706874c03e5b66343d461f87d4a.tar.bz2 volse-hubzilla-ba6178bef316f706874c03e5b66343d461f87d4a.zip |
More efficient smilie replacing
Diffstat (limited to 'include')
-rwxr-xr-x | include/text.php | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/include/text.php b/include/text.php index cf68ee121..1eef4e37a 100755 --- a/include/text.php +++ b/include/text.php @@ -889,8 +889,8 @@ function smilies($s, $sample = false) { || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) return $s; - $s = preg_replace_callback('{<(pre|code)>(?<target>.*?)</\1>}ism','smile_encode',$s); - $s = preg_replace_callback('/<[a-z]+ (?<target>.*?)>/ism','smile_encode',$s); + $s = preg_replace_callback('{<(pre|code)>.*?</\1>}ism','smile_shield',$s); + $s = preg_replace_callback('/<[a-z]+ .*?>/ism','smile_shield',$s); $texts = array( '<3', @@ -981,20 +981,18 @@ function smilies($s, $sample = false) { $s = str_replace($params['texts'],$params['icons'],$params['string']); } - $s = preg_replace_callback( - '/<!--base64:(.*?)-->/ism', - function ($m) { return base64url_decode($m[1]); }, - $s - ); + $s = preg_replace_callback('/<!--base64:(.*?)-->/ism', 'smile_unshield', $s); return $s; } +function smile_shield($m) { + return '<!--base64:' . base64url_encode($m[0]) . '-->'; +} -function smile_encode($m) { - $cleartext = $m['target']; - return str_replace($cleartext,'<!--base64:' . base64url_encode($cleartext) . '-->',$m[0]); +function smile_unshield($m) { + return base64url_decode($m[1]); } // expand <3333 to the correct number of hearts |