我正在编辑Wordpress脚本,该部分从链接中排除了H标签之间的帖子中的任何内容。我想确保某些类或标签之间的其他内容也未链接。
因此当前代码将仅在h标签之间包含任何内容 但我需要它也可以匹配figcaption之间的任何内容 标签。但我不想匹配喜欢p标签等的对象。
该脚本正在添加词汇表中的链接,我不希望它链接标题和标题。我在想我需要另一个表达式,以便它与OR b匹配。
这是字幕HTML的示例
<figcaption class="wp-caption-text">Anfisa prepares to</figcaption>
此后,我尝试了此操作:
((<figcaption.*>)(.*)(</figcaption>)|(<h.*?>)(.*?)(</h.*?>))
但是,这似乎只是匹配其中一个的第一个实例,然后停止。 谢谢!
if ($options['excludeheading'] == "on") {
$text = preg_replace_callback('%(<h.*?>)(.*?)(</h.*?>)%si', function($m) {
return $m[1].SEOAutoReSpecChar($m[2]).$m[3];
},
$text
...
答案 0 :(得分:0)
通常,您不应使用正则表达式来解析HTML内容,尤其是在嵌套HTML内容的情况下。相反,您应该使用PHP提供的某种类型的解析器。但是,如果您想用当前的方法找到确切的解决方案,我们可以尝试在匹配开始标签的同时捕获标签的文本。然后,再匹配相同的结束标记。
$text = "<figcaption>blah</figcaption>";
$text = preg_replace_callback('%<([^>]+)>(.*?)</\1>%si', function($m) {
return $m[2]; // ^^^^ backreference
}, $text);
echo "The following text is contained within a single level HTML tag: " . $text;