刮伤&正则表达式匹配不起作用

时间:2009-09-30 16:04:51

标签: php regex

好吧,我有这样的页面(我添加'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

2 个答案:

答案 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文件有哪些内容?