Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转换>&书信电报;笑脸_Php_Regex - Fatal编程技术网

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,
“/\更清楚地说:

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;
}
您将获得“aa”(循环替换的原因:
“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);