【发布时间】:2013-11-14 20:15:35
【问题描述】:
我正在关注this question,了解如何在 PHP 中检索所有标签。
特别是(在 wordpress 下),我想查找所有<pre>标签,以及所有可用信息(属性和文本)。但是,我似乎对preg_match 不太熟练,所以我向您求助。
我的文本确实包含各种<pre> 标签,有些带有属性,有些只有文字。我的功能是这样的:
function getPreTags($string) {
$pattern = "/<pre\s?(.*)>(.*)<\/pre>/";
preg_match($pattern, $string, $matches);
return $matches[1];
}
我已经简化为只有 一个 <pre> 标签的测试,但我得到了 count(getPreTags(myHTMLbody)) = 0,我不知道为什么。这是测试字符串:
<pre class="wp-code-highlight prettyprint prettyprinted" style=""><span class="com">Whatever <</span> I've written >> here <span class="something">should be taken care of</span></pre>
有什么提示吗?
干杯!
【问题讨论】:
-
不使用贪婪匹配器
.*?来获取所有<pre ...>,所以你最终得到/<pre\s?(.*?)>(.*?)<\/pre>/ -
我不明白。我试过
"/<pre\s?.*?>(.*)<\/pre>/",但它仍然给我count(matches[0]) = 0。 -
使用完全我上面的模式。
-
好的,但我仍然使用
echo count(getPreTags($obj));得到计数 0,其中函数是我的函数,模式为/<pre\s?(.*?)>(.*?)<\/pre>/... -
我通过
count()得到1,您的函数返回值与您在上面发布的完全相同的HTML 字符串。在将原始 HTML 字符串发布到此处之前,您是否清除了任何换行符?