在php中获取当前URL的文本内容

时间:2011-07-27 07:17:15

标签: php curl

我正在处理网址获取内容。

如果我只想从此站点获取文本内容(仅文本) http://en.wikipedia.org/wiki/Asia

怎么可能。我可以使用PHP获取URL标题和URL。

我使用以下代码获得了网址:

$url = getenv('HTTP_REFERER');

$file = file($url);
$file = implode("",$file);

//$get_description = file_get_contents($url);

if(preg_match("/<title>(.+)<\/title>/i",$file,$m))
$get_title = $m[1];
echo $get_title;

你可以帮助我获取内容。

使用file_get_content我可以单独获取HTML代码。还有其他可能性吗?

谢谢 - Haan的

2 个答案:

答案 0 :(得分:1)

使用file_get_contents获取HTML内容,然后使用strip_tags删除HTML标记,从而只留下文字。

答案 1 :(得分:1)

如果您只想获得HTML页面的文本版本,那么您必须自己处理它。获取HTML(您似乎已经知道如何操作),然后使用PHP将其处理为纯文本。

有几种方法可以做到这一点。第一个是htmlspecialchars(),它将转义所有HTML特殊字符。我不认为这是你真正想要的,但我想我会提到它的完整性。

第二种方法是strip_tags()。这将从HTML文档中完全删除所有HTML。但是,它不验证其使用的输入,它只是做一个相当简单的文本替换。这意味着你最终会得到你可能不想要的东西(包括头部的内容,或嵌入式javascript和样式表的内部)

另一种方法是使用DOMDocument解析下载的HTML。我没有为你编写代码(没有时间),但一般程序类似如下:

  1. 将HTML加载到DOMDocument对象
  2. 获取文档的body元素并迭代其子元素。
  3. 对于每个孩子,如果有问题的孩子是文本节点,请将其附加到输出字符串。如果它不是文本节点,则迭代其子节点以检查其子节点是否是文本节点(如果不是,则迭代这些子元素,依此类推)。您可能还想进一步检查节点的类型。例如,如果您不希望在输出中嵌入javascript或css,那么您可以检查标记类型是不是STYLE还是SCRIPT,如果是,则忽略它。
  4. 以上描述最容易实现为递归函数(自称调用函数)。

    最终结果应该是一个字符串,其中只包含下载页面的文本内容,没有标记。

    编辑:忘记了strip_tags!我更新了我的答案,也提到了这一点。我把我的DOMDocument方法留在了我的答案中,因为正如strip_tags的文档所述,它没有对其处理的标记进行验证,而DOMDocument试图解析它(如果实现基于DOMDocument的文本提取,则可能更强大)好)。