Php 转换>&书信电报;笑脸
我有以下正则表达式用于匹配Php 转换>&书信电报;笑脸,php,regex,Php,Regex,我有以下正则表达式用于匹配\\\\“\1”, “/\[url=(.+?)\](.+?)\[\/url\]/'=>”, “/:\)/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f642.png”)。$icon\u div\u 2, “/;\)/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f609.png”)。$icon\u div\u 2, “/:\/”=>$icon\u div\u 1.u
\\\\
“\1”, “/\[i\](.+?)\[\/i\]/”=>“\1”, “/\[s\]”(.+?)\[\/s\]/'=>“\1”, “/\[url=(.+?)\](.+?)\[\/url\]/'=>”, “/:\)/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f642.png”)。$icon\u div\u 2, “/;\)/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f609.png”)。$icon\u div\u 2, “/:\/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f615.png”)。$icon\u div\u 2, “/:\(/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f641.png”)。$icon\u div\u 2, “/:O/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f632.png”)。$icon\u div\u 2, “/:P/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f61b.png”)。$icon\u div\u 2, '/-.-/'=>$icon\U div\u 1.url($folder\u smileys.smiley-1f611.png')。$icon\U div\u 2, “/\ ^\ ^/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f604.png”)。$icon\u div\u 2, “/:@/”=>$icon\u div\u 1.url($folder\u smileys.smiley-1f621.png”)。$icon\u div\u 2, “/\更清楚地说:您将获得“aa”(循环替换的原因:function bbcode($string) { $smileys = [ ':)' => $icon_div_1 . url($folder_smileys. 'smiley-1f642.png') . $icon_div_2, ';)' => $icon_div_1 . url($folder_smileys. 'smiley-1f649.png') . $icon_div_2, // etc. ]; $result = strtr($string, $smileys); $codes = [ '~\[b](.+?)\[/b]~s' => '<div class="font-bold">\1</div>', '~\[i](.+?)\[/i]~s' => '<div class="font-italic">\1</div>', '~\[s](.+?)\[/s]~s' => '<div class="font-strikethrough">\1</div>', '~\[url=(.+?)](.+?)\[/url]~s' => '<a href="\1" target="_blank">\2</a>', ]; $result = preg_replace(array_keys($codes), $codes, $result); return $result; }
)“az”->“zz”->“aa”
的行为不同,只解析字符串一次(无论替换对的数量如何)strtr
它返回“za”(一次通过)。您无需考虑转义它。将所有包含尖括号的搜索字符串放在替换列表的第一个位置(在产生尖括号的项目之前)。换句话说,将所有方括号模式放在数组的末尾。另一件事:尖括号不是正则表达式中的特殊字符,您不需要对它们进行转义。请注意,使用是无用的,array\u值
应该足够了。$code
。因此它可以工作,但在转换之间会遇到冲突。是的,但我如何才能不破坏其他笑脸?哦!你的意思是这样的!现在我跟着你:)非常感谢这个例子。它帮了我很多忙!/(>\/div>/div>/div>/div>/div>/div>/div>/div>/div>/div>
,包括:);):O^^^>
function bbcode($string) { $smileys = [ ':)' => $icon_div_1 . url($folder_smileys. 'smiley-1f642.png') . $icon_div_2, ';)' => $icon_div_1 . url($folder_smileys. 'smiley-1f649.png') . $icon_div_2, // etc. ]; $result = strtr($string, $smileys); $codes = [ '~\[b](.+?)\[/b]~s' => '<div class="font-bold">\1</div>', '~\[i](.+?)\[/i]~s' => '<div class="font-italic">\1</div>', '~\[s](.+?)\[/s]~s' => '<div class="font-strikethrough">\1</div>', '~\[url=(.+?)](.+?)\[/url]~s' => '<a href="\1" target="_blank">\2</a>', ]; $result = preg_replace(array_keys($codes), $codes, $result); return $result; }
$string = 'az'; $rep = [ '~a~' => 'z', '~z~' => 'a' ]; echo preg_replace(array_keys($rep), $rep, $string);
$string = 'az'; $rep = [ 'a' => 'z', 'z' => 'a' ]; echo strtr($string, $rep);