2016-09-30 38 views
0

我試圖從一個HTML字符串中獲取文本字符串。 我想僅捕獲標籤之間的文本並跳過任何空標籤。使用preg_match在HTML中查找中文文本

我試圖當前的嘗試可以在這裏找到:
https://regex101.com/r/3Ujmw6/2

  • 我不能使用\ W,因爲我需要捕捉中國文字
  • 我想只有文字,而不是很多空結果

我曾嘗試:

/>(\X+?)</g 

//I will fail on nested tags, it capture the first nested tag 
<p><strong>blablab</strong></p> 

這:

/>(\X*?)</g 

//Finds me all the string, but also includes loads of empty strings 
//for adjacent tags >< 

有什麼辦法來排除\ X <?還是有更好的方法來寫這個,所以它只返回文本部分?

+1

我很確定如果你使用utf-8,\ w'支持中文字符......但我可能是錯的。即使如此,你也不應該試圖用RegExp解析HTML - 它是這個工作的錯誤工具 - 而是使用類似'DOMDocument()'的東西。 – CD001

+0

我一直無法使它與\ w一起工作,除非它是我正在使用的正則表達式網站的限制。 感謝domcrawler的建議,沒有考慮使用它來抓取文本節點。轉向該解決方案。 –

+0

這個函數['strip_tags()'](http://php.net/manual/en/function.strip-tags.php)可以幫助你。 – revo

回答

0

嘗試像

>(\s*[^\s<][^<]*) 

這只是><之間的所有文字,是不是所有的空格相匹配的正則表達式。見https://regex101.com/r/3Ujmw6/4

+0

根據CD001的評論,我用DomCrawler代替了,但你的答案確實做了我所要求的。 –