可能重複:
regex help with getting tag content in PHP使用正則表達式在PHP中獲取html標記中的字符串的子字符串?
首先,請有關與正則表達式解析HTML無可奉告。我知道這是不可能的,但它應該在這種情況下完成工作。
我試着獲取<country lan="x">...</country>
標記的內容。沒有像<country />
這樣的特殊情況,由於包含許多特殊字符(MediaWiki文本)的標籤內容,PHP DOM解析器失敗。
所以我有這樣
<country lan="en">
dsadasd
{|,'''""" }}|]][][]//\\\\\2r2erfaf<>><<<#<div> --..,;;"!"§$%&/()=?`´´``***+~~~''
0131ß
ÄÜÖ#ax
</country>
我此刻的解決方案的一些文字是$pattern = <country lan=\"en\">(.|\t|\r|\n|\s)*<\/country>
這似乎符合使用
preg_match_all($pattern, $content, $matches);
print_r($matches);
但打印結果只是一個空數組。我如何只提取<country lan="x">...</country>
標籤之間的字符串?
如果我這樣做是正確的OP不能使用DOM解析器,因爲HTML是無效的。 –
如果這對於一個正則表達式來說太複雜了,爲什麼只是不查找第一個字符串,然後查找第二個字符串並在兩個位置之間獲取子字符串?特別是開始和結束是固定的字符串。只是說DOM不適合你,也很清楚正則表達式對你來說太複雜了。所以只需要做標準的字符串操作。 – hakre
我認爲DOM Parser並沒有這樣做,因爲在標籤之間混合了wiki標記和html的內容 - 所以它似乎是無效的。 「標準字符串操作」比使用正則表達式要困難得多,因爲每個站點可以有多個' ... '標籤。 –
dnl