我正在使用PHP preg_match函数...
如何在标签之间获取文字。以下尝试无法获取值:preg_match("/^<title>(.*)<\/title>$/", $originalHTMLBlock, $textFound);
如何找到第一个出现的以下元素并获取(文本和标签束):
<div id="post_message_">
一堆文字和标签</div>
答案 0 :(得分:3)
这开始变得无聊。正则表达式可能不是匹配HTML等语言的首选工具,在这个网站上有成千上万的类似问题来证明它。我不会链接到其他人总是链接到的答案 - 做一些搜索并亲自看看。
那就是说,你的第一个正则表达式假定<title>
标签是整个输入。我怀疑情况并非如此。所以
preg_match("#<title>(.*?)</title>#", $originalHTMLBlock, $textFound);
有更多的工作机会。请注意,如果输入中有多个<title>
标记,则延迟量词变得很重要。 <title>
可能不太可能,<div>
可能不会。
对于您的第二个问题,如果您在要查找的标签内没有任何嵌套的<div>
标签,那么您只有正则表达式的工作机会。如果是这样的话,那么
preg_match("#<div id=\"post_message_\">(.*?)</div>#", $originalHTMLBlock, $textFound);
可能有用。
但总而言之,你最好使用HTML解析器。
答案 1 :(得分:0)
<title\b[^>]*>(.*?)</title>
(您确定需要^
和$
吗?)<div\b[^>]*>(.*?)</div>
文字中没有</div>
标记,则可以使用相同的正则表达式Bunch of Texts and Tags
。如果你这样做,也许你应该看看http://code.google.com/p/phpquery/