aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authortoclimb <toclimb@misanthrozot.com>2014-02-02 14:52:00 +0100
committertoclimb <toclimb@misanthrozot.com>2014-02-02 14:52:00 +0100
commitba6178bef316f706874c03e5b66343d461f87d4a (patch)
tree1c8a0f7202eb9934aee51609eefbd3fe3633f7eb /include
parente83419b53e27078867f8449f476d87b064b9d502 (diff)
downloadvolse-hubzilla-ba6178bef316f706874c03e5b66343d461f87d4a.tar.gz
volse-hubzilla-ba6178bef316f706874c03e5b66343d461f87d4a.tar.bz2
volse-hubzilla-ba6178bef316f706874c03e5b66343d461f87d4a.zip
More efficient smilie replacing
Diffstat (limited to 'include')
-rwxr-xr-xinclude/text.php18
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(
'&lt;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