好吧,我有这样的页面(我添加'scrapehere'字符串以便更容易导航,这个页面不是100%正确的html,它有两个相同的字段,具有不同的值。不,我可以'解决它,因为它是我正在使用的cms,我觉得这对我来说太复杂了):
scrapehere<input type="hidden" id="_someid" name="_somename" value="value"/>
我正试图获得隐藏的价值。所以我写了这样的剧本:
<?php
$data = file_get_contents('scrape-test.html');
$regex = '/scrapehere<input type="hidden" id="_someid" name="_somename" value="(.+?)"/';
preg_match($regex,$data,$match);
var_dump($match);
echo $match[1];
?>
但不是我的值脚本输出这个:
array(2) { [0]=> string(74) "scrapehere string(5) "value" } value
它有什么问题,它为什么不打印价值呢?它已经把它保存在某个地方,但我的回声是错的吗?我希望输出只是value
。
答案 0 :(得分:1)
var_dump($match);
echo $match[1];
这两行都输出数据。 var_dump
输出一个数组,其中第一个元素包含一个输入标记,该标记未在浏览器中显示,因为它被隐藏了!
因此,如果您希望输出仅为'value'
,请从代码中删除var_dump($match);
并让echo
完成工作。
答案 1 :(得分:0)
我这样做了:
<?php
$data = 'scrapehere<input type="hidden" id="_someid" name="_somename" value="value"/>';
$regex = '/scrapehere<input type="hidden" id="_someid" name="_somename" value="value"/';
preg_match($regex,$data,$match);
print_r($match);
echo $match[1];
?>
我明白了:
Array
(
[0] => scrapehere<input type="hidden" id="_someid" name="_somename" value="value"
)
正是我所期待的。你的scrape-test.html文件有哪些内容?