preg_replace上的意外字符

时间:2013-09-16 22:27:50

标签: php preg-replace

我在wordpress菜单系统中使用preg_replace输出我自己的干净HTML,与gumby框架一起使用。但是,当我通过preg_replace

运行菜单字符串时
$menu = preg_replace('<ul>','<div class="dropdown"><ul>',$menu);
$menu = preg_replace('</ul>','</div></ul>',$menu);

我在模板中吐出了意想不到的结果,它吐出额外的“”&lt;在我的下拉替换课程之上。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在正则表达式中,你总是有一对分隔符。其中一个鲜为人知的特点是你可以拥有一对匹配的支架式字符(parens,square,brace或angle),以避免任何内部逃逸。但是,在这种情况下,这会导致您的“正则表达式”仅替换“ul”和“/ ul”,而不是整个标记。

要修复,只需使用str_replace即可。考虑到你正在替换静态字符串,它会便宜得多。还The Pony He Comes

另请注意,您的HTML标记顺序错误。如果你打开div然后ul,你应该关闭ul然后div。