2016-12-17 67 views
0

我提取了一些html與file_get_contents放在一個字符串中。現在,我試圖在裏面搜索。我想我應該使用通配符來搜索它,但我無法使其工作。在preg_match中使用通配符

我想搜索的HTML看起來像">2</td>,我希望在數位使用通配符。

我想我應該使用正則表達式,但我無法弄清楚如何使用它。


我試用的樣子:

if (preg_match('/>(\w+)</td>/', $content, $matches)) { 
    echo $matches[1]; 
} 

如何添加的1個字符的限制正則表達式,所以我長最多隻有3個字符的通配符搜索,只有形式整數?


還有沒有比正則表達式更好的方法;尋找這個html字符串並將它們放入一個數組中?

+0

我想搜索的2位以及實際 – senty

+3

你知道,有DOM和XPath在HTML文檔進行搜索,你呢? – Gordon

+0

我試圖從其他網站獲取信息。我用了file_get_contents。我可以用你的方式嗎?你認爲什麼是達到我想要的最好的方式。數字是1-200,我試圖搜索html來找到每一個。但是這些類是古怪的結構,因此我需要這樣搜索(我認爲) – senty

回答

1

你需要兩個改變兩件事。將\w替換爲\d以僅允許數字而不是每個單詞字符。其次,將+替換爲{1,3}。最後說一個最多三位數是必需的。然後,您的完整的陳述是:

if (preg_match('/>(\d{1,3})</td>/', $content, $matches)) { 
    echo $matches[1]; 
} 
+0

我使它工作,它適用於$ matches [1],但它不會返回$ matches [2]或[3]:/可能是什麼問題? – senty

+0

從手冊:如果提供了匹配,則會填充搜索結果$匹配[0]將包含匹配完整模式的文本,$ matches [1]將匹配第一個捕獲的括號內子模式的文本,依此類推。 –

+1

您只有一個子模式,因此您只有$匹配[0]和$ matches [1]。 查看'preg_match_all'來找到它們全部而不是第一個。 –