我有一个php脚本,可以提取网页的元标记信息。 我在CLI中使用这个脚本。 我的问题是如何添加到接受参数(url)的脚本并将其应用于脚本。同样,这将来自命令行界面。
以下是示例脚本。
#!/usr/bin/php
<?php
function getMetaData($url){
// get meta tags
$meta=get_meta_tags($url);
// store page
$page=file_get_contents($url);
// find where the title CONTENT begins
$titleStart=strpos($page,'<title>')+7;
// find how long the title is
$titleLength=strpos($page,'</title>')-$titleStart;
// extract title from $page
$meta['title']=substr($page,$titleStart,$titleLength);
// return array of data
return $meta;
}
// This line should be replaced with the function call using argv
//$tags = getMetaData('$url');
// Check data was passed
if (empty($argv[1])) {
exit("You didn't specify a URL!");
}
// Pass the supplied data into your code
$tags = getMetaData($argv[1]);
echo 'Title: '.$tags['title'];
echo "\n";
echo 'Description: '.$tags['description'];
echo "\n";
echo 'Keywords: '.$tags['keywords'];
?>
非常感谢帮助,我是一个php新手。
答案 0 :(得分:1)
首先,要直接解决您的问题 - 您可以通过$argv
全局变量访问脚本的命令行参数。
$argv
是在全局范围内注册的标准变量,而不是$_GET
和$_POST
之类的superglobal等等,因此除非在您的函数中可用,否则它将无法使用你把它作为一个参数传递。
第一个参数将在$argv[1]
中提供,第二个参数在$argv[2]
中提供,等等。
现在要解决有关您的脚本的几点:
<meta>
标记,并轻松提取其属性的值。get_meta_tags()
,一次是file_get_contents()
。这显然是低效的 - 但是可以通过使用DOM来解决,因为您只需要创建一次文档对象。或者,您可以先使用file_get_contents()
并将数据保存到临时文件,然后在该临时文件上调用get_meta_tags()
。?>
标记可以(通常应该)省略。这可以防止在脚本末尾意外输出意外的空白区域。修改强>
以下是如何使用$argv
:
<?php
// Check data was passed
if (empty($argv[1])) {
exit("You didn't specify a URL!");
}
// Pass the supplied data into your code
$tags = getMetaData($argv[1]);
// ...