我在wordpress菜单系统中使用preg_replace输出我自己的干净HTML,与gumby框架一起使用。但是,当我通过preg_replace
运行菜单字符串时$menu = preg_replace('<ul>','<div class="dropdown"><ul>',$menu);
$menu = preg_replace('</ul>','</div></ul>',$menu);
我在模板中吐出了意想不到的结果,它吐出额外的“”&lt;在我的下拉替换课程之上。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
在正则表达式中,你总是有一对分隔符。其中一个鲜为人知的特点是你可以拥有一对匹配的支架式字符(parens,square,brace或angle),以避免任何内部逃逸。但是,在这种情况下,这会导致您的“正则表达式”仅替换“ul”和“/ ul”,而不是整个标记。
要修复,只需使用str_replace
即可。考虑到你正在替换静态字符串,它会便宜得多。还The Pony He Comes。
另请注意,您的HTML标记顺序错误。如果你打开div然后ul,你应该关闭ul然后div。