【发布时间】:2013-06-02 05:58:27
【问题描述】:
我希望将标签从 WYSIWYG 编辑器替换为 .
目前我正在使用以下代码来实现这一点。
$content = preg_replace('/<h1(.*?)<\/h1>/si', '<p class="heading-1"$1</p>', $content);
$content = preg_replace('/<h2(.*?)<\/h2>/si', '<p class="heading-2"$1</p>', $content);
$content = preg_replace('/<h3(.*?)<\/h3>/si', '<p class="heading-3"$1</p>', $content);
$content = preg_replace('/<h4(.*?)<\/h4>/si', '<p class="heading-4"$1</p>', $content);
$content = preg_replace('/<h5(.*?)<\/h5>/si', '<p class="heading-5"$1</p>', $content);
$content = preg_replace('/<h6(.*?)<\/h6>/si', '<p class="heading-6"$1</p>', $content);
如您所见,这段代码相当混乱,如果我能将其压缩成一个正则表达式就好了,但我只是缺乏这样做的能力。
我曾考虑将这行代码作为替代。
$content = preg_replace('/<h(.*?)<\/h(.*?)>/si', '<p class="heading-$2"$1</p>', $content);
我不确定是否使用上述内容,客户倾向于从其他网站复制内容,将其直接粘贴到他们的新所见即所得中,我已经看到从 hr 标签到标题标签的任何内容都出现在那里。
我需要的只是上面的单行,除了标签本身只能是2个特定字符(所以确保标签以H开头,后跟[1-6])。
我还要求它添加到 p 标签的类是特定于数字使用的,例如:heading-1、heading-2。
任何帮助将不胜感激,感谢您的宝贵时间。
【问题讨论】:
-
$content = preg_replace('/<h([1-6])(.*?)<\/h1>/si', '<p class="heading-$1"$2</p>', $content);玩得开心。 -
肯定不行,因为它期望完成 标记?
-
和here 是你可以做到的。使用此正则表达式,
<h3> hello world</h4>将无法匹配。 -
太好了,感谢您的帮助。我现在正在使用这个,一个稍微修改过的原始版本,因为我相信我说它需要一个正确的完成标签是正确的? $content = preg_replace('/
/si', ' ', $content);
-
老实说,您应该使用 HTML 解析器。但是,如果您对可能得到的输入有信心,那么请继续使用正则表达式。
标签: php regex wordpress preg-replace wysiwyg