正则表达式php在html标签中找到一个字符

时间:2015-01-09 22:39:22

标签: php regex

我遇到了一个我似乎无法解决的顽固问题。

我试图在特定字符位于html标记内(而不是在其间)时尝试查找。

为了测试这个,我有2个测试字符串:

  1. 没有HTML的字符串。这是第2句。
  2. 包含部分 HTML的字符串。 this is <a href="www.somesite.com">sentence</a>
  3. 我想找到&lt;中的所有句点字符。 &GT; html标签所以匹配应该是www.somesite.com中的2个时期,我无法正确获得匹配。有人可以看看我的正则表达式,看看我错过了什么?

    (<[^>]*>?(\.))>?
    

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);

Demo

答案 1 :(得分:0)

给出字符串&#34; This is <a href="www.somesite.com">sentence</a> I want to test.&#34;正则表达式:

\.(?=\w)

将匹配网址中的句点,但不会匹配句子末尾的句点。 注意 正则表达式不是特定于网址的,只是找到一个句点,后面跟着一个单词字符,使用正向前瞻。

说过你应该用PHPDomDocument

之类的东西来解析HTML