如何用HTML标签替换自定义标签?

时间:2019-04-09 10:29:30

标签: php regex

我想用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()函数来提供正则表达式。

1 个答案:

答案 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.comregex101.com