2011-03-24 67 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解析器意味着更少的代码和一致的结果:)