2011-03-24 31 views
0

我是一個noob,當涉及到正則表達式,而不是用php也不好。pre_match div與不必要的換行符

我用這個代碼從另一個URL複製內容:

<?php 

$conts = file_get_contents('http://www.curtisjohnsonrealtyaz.com'); 

$pattern = '~<div.*id="home-right".*>(.*?)</div>~iUs'; 
preg_match($pattern, $conts, $matches); 
array_shift($matches); 

echo $matches[0]; 

?> 

它的工作除了額外的換行符罰款,還更換了一個錨定的圖像鏈接到當前的URL。

我真的很感謝一些幫助。

感謝

+0

「它的工作除了額外的換行符罰款,還更換了一個錨定的圖像鏈接到當前的URL 「。 我不確定這是什麼意思。 – Ciaran 2011-03-24 08:30:39

回答

0

嘗試增加了「M」標誌到您的模式,應該讓整個換行符(多行模式)伸展。

+0

對不起,但我真的不知道該怎麼做......新代碼的外觀如何? – vio 2011-03-24 08:22:23

+0

抱歉耽擱......如果你還在尋找解決方案,我建議這樣做: '$模式=「〜(.*?)

〜iUsm」;' - 加入M分割爲匹配標誌 – 2011-03-28 22:30:25

0

你應該使用dom解析器來解析html,PHP Simple HTML DOM Parser是一個不錯的選擇。

代碼:

include("simple_html_dom.php"); 
$html = file_get_html('http://www.curtisjohnsonrealtyaz.com'); 
$div = $html->getElementById("home-right")->innertext; 
echo $div; 

PHP簡單的HTML DOM解析器意味着更少的代碼和一致的結果:)