我正在尝试使用cURL从其他网址获取/获取文本。我从中获取文本的位置是在包含动态(非静态)数据的空白HTML文档中,因此没有要过滤的HTML标记。这是我到目前为止所得到的:
$c = curl_init('http://url.com/dataid='.$_POST['username']);
curl_setopt(CURLOPT_RETURNTRANSFER, true);
curl_setopt(CURLOPT_FRESH_CONNECT, true);
$html = curl_exec($c);
if (curl_error($c))
die(curl_error($c));
// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
这很有效,但在动态HTML文档的末尾有不需要的文本,“ #endofscript ”(没有引号)。这会被抓取/抓取,那么可以做些什么来不抓住它?我试过看“ strpos ”这样但我不确定如何将它与cURL集成。
所有/任何帮助将/将不胜感激。的:)
编辑:我目前正在使用的代码:
<?php
$homepage = file_get_contents('http://stackoverflow.com/');
$result = substr("$homepage", 0, -12);
echo $result;
?>
答案 0 :(得分:2)
为什么不简单地使用
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
答案 1 :(得分:1)
您可以使用preg_replace()删除所有以“#”开头的行,例如:
$res = preg_replace('/^#.*$[\\r\\n]*/m','',$dat);
或只是
'/#endofscript$/'
最后匹配东西。
substr / str_replace /其他一些字符串函数也可以。
<小时/> 一些示例代码如何实现substr / preg_replace方法:
<pre><?php
$dat = 'Lorem ipsum dolor sit amet,
consectetur adipisicing
elit #endofscript';
// either
if (substr($dat,-12) == '#endofscript')
$res = substr($dat,0,-12);
var_dump($res);
// or
$res = preg_replace('/#endofscript$/','',$dat);
var_dump($res);
?></pre>
答案 2 :(得分:1)
由于您说这个错误的文本可能附加到输出中,您可以使用类似此代码的内容(将其包装在函数中以便于编码体验):
<?php
define("bad_text", "#endofscript");
$feed_text = "here is some text#endofscript";
$bExist = false;
if(strlen($feed_text) >= constant("bad_text"))
{
$end_of_text = substr($feed_text, strlen($feed_text) - strlen(constant("bad_text")));
$bExist = strcmp($end_of_text, constant("bad_text")) == 0;
}
if($bExist)
$final_text = substr($feed_text, 0, strlen($feed_text) - strlen(constant("bad_text")));
else
$final_text = $feed_text;
echo $final_text;
?>
答案 3 :(得分:0)
谢谢大家的帮助,我不能说我多么感谢他们!使用GOsha提供的脚本,我设法修改它,以便删除结束文本。使用的代码如下:
<?php
$homepage = file_get_contents('http://url.com/dataid='.$_POST['username']);
$rest = substr("$homepage", 0, -12);
echo $rest;
?>
现在已经回答了这个问题。谢谢大家,我非常感谢您的所有回复。 :)