2013-06-11 13 views
-1

我有几百个需要搜索电话号码的网站,我想用PHP来搜索我,如果我只想弄清楚如何抓取网页,设置页面作为变量的完整的HTML,我可以写一个脚本,通过所有的网站去,并确实为我需要查找的字符串搜索..将网站的html代码拉为php变量

我能使用PHP这样做,我可以用

echo $url 

我会看到网站的html代码,而不是页面呈现?

我已经试过用卷曲呈现的所有内容,当我执行时。 谢谢!

+0

php不会呈现任何内容,但如果您回应浏览器,是的,您将在浏览器中看到呈现的版本。 – jeroen

+0

如果您尝试将包含HTML的字符串内容输出到浏览器屏幕,则很可能会将其呈现为HTML。无论如何,如果您只是在页面内搜索某些内容,为什么还要输出所有内容?这似乎更像是DOMDocument/DOMXPath或类似的问题。 –

+0

http://php.net/manual/en/function.file-get-contents.php $ html = file_get_contents($ url); –

回答

3
htmlspecialchars($data); 

docs

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt; 

至于在变量($new在这种情况下),你都要使用正则表达式。但要小心,将html作为标记显示而不是呈现它,会在网站上显示代码,但您需要做而不是需要在字符串中进行搜索。

curlfile_get_contents方法之后,字符串(来源)完全正常。

此外,解析HTML,我发现PHP Simple HTML DOM parser是令人难以置信的提供选择器和大量的实用程序,根据您的情况可能会更好。

1

您可以使用htmlentities函数htmlentities函数将html标签转换为文本。

echo htmlentities($page_content); 
0

link有着相当不错的例子:

/* gets the data from a URL */ 
function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$returned_content = get_data('http://stackoverflow.com'); 

然后,您可以使用正则表达式$returned_content发现你正在寻找的字符串。