我想用HTML标签以及自定义标签之间的所有文本替换(包括嵌套)自定义标签。
例如:
<ppbold>bold</ppbold> => <b>bold</b>
<ppitalic>bold</ppitalic> => <i>italic</i>
and so on ...
请,有人可以告诉正则表达式吗? 但是请记住,嵌套标记也应该正确替换,例如:
<ppbold>bold <ppitalic>bold</ppitalic></ppbold> => <b>bold<i>italic</i></b>
最好使用PHP中的preg_match_all()
,preg_match()
和preg_replace()
函数来提供正则表达式。
答案 0 :(得分:2)
在此处与{p>一起使用preg_replace_callback()
~(</?)(\w+)(>)~
PHP
中:
<?php
$string = "<ppbold>bold <ppitalic>bold</ppitalic></ppbold>";
$replacements = ["ppbold" => "b", "ppitalic" => "i"];
$regex = "~(</?)(\w+)(>)~";
$string = preg_replace_callback(
$regex,
function($match) use ($replacements) {
return $match[1] . $replacements[$match[2]] . $match[3];
},
$string
);
echo $string;
?>
有关表达式,请参见a demo on ideone.com和regex101.com。