我遇到了一个我似乎无法解决的顽固问题。
我试图在特定字符位于html标记内(而不是在其间)时尝试查找。
为了测试这个,我有2个测试字符串:
this is <a href="www.somesite.com">sentence</a>
我想找到&lt;中的所有句点字符。 &GT; html标签所以匹配应该是www.somesite.com中的2个时期,我无法正确获得匹配。有人可以看看我的正则表达式,看看我错过了什么?
(<[^>]*>?(\.))>?
答案 0 :(得分:1)
试试这个:
$re = "/>[^<]*<(*SKIP)(*F)|searchText/mi"; //before | part avoid tag inner text and after | part search only tag inside text.
$str = "<div><a href=\"www.searchText.com\">This is <a href=\"www.searchText.com\">sentence</a> tI want to test.</a></div>";
preg_match_all($re, $str, $matches);
答案 1 :(得分:0)
给出字符串&#34; This is <a href="www.somesite.com">sentence</a> I want to test.
&#34;正则表达式:
\.(?=\w)
将匹配网址中的句点,但不会匹配句子末尾的句点。 注意 正则表达式不是特定于网址的,只是找到一个句点,后面跟着一个单词字符,使用正向前瞻。
说过你应该用PHPDomDocument
之类的东西来解析HTML