0

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

$menu = preg_replace('<ul>','<div class="dropdown"><ul>',$menu);
$menu = preg_replace('</ul>','</div></ul>',$menu);

我在模板中吐出意外的结果,它在我的下拉替换类上方吐出额外的“”<。

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

4

1 回答 1

0

在正则表达式中,您总是有一对分隔符。鲜为人知的功能之一是您可以拥有一对匹配的类似括号的字符(圆括号、方括号、大括号或角),以避免需要转义内部的任何内容。但是,在这种情况下,这会导致您的“正则表达式”仅替换“ul”和“/ul”,而不是整个标签。

要修复,只需使用str_replace. 考虑到您要替换静态字符串,它要便宜得多。还有他来的小马

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

于 2013-09-16T22:32:36.597 回答