Php preg match-字符串与文件的匹配\u获取\u内容()

Php preg match-字符串与文件的匹配\u获取\u内容(),php,Php,我想得到一些网站的来源,并通过它搜索找到一个字符串。我是这样做的: $source = file_get_contents('http://website.com'); preg_match('/foobar/', $source, $match); var_dump($match); $source = <<<EOF // paste here EOF; preg_match('/foobar/', $source, $match); var_dump($ma

我想得到一些网站的来源,并通过它搜索找到一个字符串。我是这样做的:

$source = file_get_contents('http://website.com');

preg_match('/foobar/', $source, $match);

var_dump($match);
$source = <<<EOF
   // paste here
EOF;

preg_match('/foobar/', $source, $match);

var_dump($match);
源代码包含我要查找的表达式,转储$source变量可以证明这一点。但结果是一个空数组

当我复制源代码并粘贴它时,一切正常,结果正确:

$source = file_get_contents('http://website.com');

preg_match('/foobar/', $source, $match);

var_dump($match);
$source = <<<EOF
   // paste here
EOF;

preg_match('/foobar/', $source, $match);

var_dump($match);
现在它工作得很好

怎么了,为什么会这样?谢谢

进行更多调试

在通过文件内容获取$source后打印出来,它会给您带来什么

最有可能的是,您无法从网站获取数据,这可能是它无法与您的常规数据匹配的原因

可能有几个原因,例如,您试图获取的页面使用重定向或https,并且文件\u get\u内容没有那么先进,无法检测并获取它

可能的解决方案是使用cURL替换file_get_contents函数,它提供了更多的功能,甚至可以获取https


类似的东西。

您是否尝试过var_dump$sourceFromUrl====$sourceFromPasting;检查您的输入是否相同?这应该是检查的第一点,仔细检查从文件\u get\u contents echo htmlentities$source返回的字符串;这就是你所期望的。网站可能会阻止php下载其源用户代理匹配、检查会话,或者您看到的源代码是由javascript生成的,无法访问文件内容。