2015-06-26 70 views
-2

我正在編寫一個將從其他網站獲取特定代碼的PHP腳本。正則表達式PHP:從另一個網站獲取特定內容

一切都完成了,它獲取一個div,它有一個類並顯示在我的頁面上。

$title = '#\<div class="detailBox"\>(.+?)\<\/div\>#s'; 
preg_match($title, $page, $titles); 
echo $titles[0]; 

但是當我嘗試從表中獲取它說明不了什麼

在另一個網站上的內容是這樣的:

<tr> 
    <th scope="row">開催時間</th> 
    <td>10:30~17:00</td> 
</tr> 

而且我用這個代碼把它牽:

$date = '#\<tr\><th scope="row"\>開催時間<\/th\><td\>(.+?)\<\/td\><\/tr\>#s'; 
preg_match($date, $page, $dates); 
echo $dates[0]; 

我試圖$date = '#\<th scope="row"\>開催時間<\/th\>#s';和它的作品但如果我添加<td>在裏面。

我在做什麼錯了?

+2

爲什麼我的問題有-2減點。我認爲我的問題是恰當的,並且重要。 – Omer

回答

3

您需要打開unicode修飾符u並且還匹配inbetween換行符。

$date = '#<tr>\s*<th scope="row">開催時間</th>\s*<td>(.+?)</td>\s*</tr>#su'; 
preg_match($date, $page, $dates); 
+3

演示https://regex101.com/r/nY2iD7/1 –

+0

謝謝Avinash :) ...如果有超過一個tr? ...我應該使用preg_match_all()嗎? – Omer

+0

是的,你需要使用preg_match_all –

1

,逃離元字符 $日期= '#\\開催時間\ < /次> \ \ </TD> </TR>#秒(+。?)'; preg_match($ date,$ page,$ dates);

+0

在回答關於堆棧溢出的問題時,他們應該確實是完整的答案。如果你正在添加他人的答案,請隨時在底部添加你的修改作爲評論。答案出現在頁面上的順序可能會發生變化,所以如果您需要參考另一個答案,最好參考發佈原始答案的人的姓名。 –

相關問題