我正在尝试在我的网站上创建一个用户可以上传链接的功能,例如Digg。我有代码从用户上传到我的网站的URL抓取HTML源代码,并将其存储在.txt文件中。然后我想抓住标签
中的内容<meta name="content" description="GRAB THIS">
假设此标记存在。有时它可以工作,但有时它不起作用,即使该特定网页的源代码包含我在代码中指定的必要元标记。我注意到,如果“GRAB THIS”内容包含html实体(&amp;,等),它似乎无法正常工作。如果您对如何使其工作有任何想法,请告诉我。这是我的代码:
$html_data = file_get_contents( $path_to_txt_file_that_contains_html );
preg_match( '#<meta name="description" content="(.+?)">#si', $html_data, $tor;
$tor = str_replace ( '<meta name="description" content="' , "", $tor[0] );
$tor = str_replace ( '">', "", $tor );
有时$ tor仍包含
<meta name="description" content="CONTENT"
但没有结束&gt;,所以我把它放在mySQl数据库中时我的代码就会中断。关于我做错了什么的任何想法?提前感谢您的帮助!
答案 0 :(得分:3)
实际上非常简单。
PHP提供了自己的内置解决方案:http://php.net/manual/en/function.get-meta-tags.php
答案 1 :(得分:1)
大多数人会告诉您使用DomDocument来解析html。虽然我在大多数情况下都同意,但有时使用正则表达式更容易。因此,在您的问题中使用正则表达式,这是一个正则表达式解决方案。
$html_data = file_get_contents( $path_to_txt_file_that_contains_html );
preg_match( '#<meta name="description".*content="([^"]+)">#siU', $html_data, $tor);
$tor = $tor[1];
这是未经测试但在你的情况下应该可以正常工作。