使用 file_get_contents 和变量作为目标文件的链接时出现问题

发布于 2024-12-19 04:23:23 字数 687 浏览 1 评论 0原文

我正在尝试循环遍历链接数组,并使用 file_get_contents 获取源代码并从中获取某些内容:

$links = file('mysite2.txt');

foreach($links as $link) {

$f = file_get_contents("$link");
$source = $f;


if(preg_match('/<meta pro=\"(.*)\" \/>/',$source,$matches)) {
   $answer = $matches[1];

echo "$answer";
}

}

现在,当我在 file_get_contents 中使用 $link 时 (file_get_contents( "$link")) 函数中,preg_match 条件为 false。然而,当我使用 file_get_contents (`file_get_contents("http://www.site.com/something")) 中的 my_site2.txt 中的链接之一时,它工作正常。

我什至尝试过使用另一种 txt 文件,该文件仅包含一个链接,该链接在源代码中具有正确的字符串。

Iv 也尝试过不带引号: file_get_contents($link)

I'm trying to loop through an array of links, and use the file_get_contents to get the source code and take certain content from it:

$links = file('mysite2.txt');

foreach($links as $link) {

$f = file_get_contents("$link");
$source = $f;


if(preg_match('/<meta pro=\"(.*)\" \/>/',$source,$matches)) {
   $answer = $matches[1];

echo "$answer";
}

}

Now when i use $link in the file_get_contents (file_get_contents("$link")) function, the preg_match condition is false. Yet when i use one of the links in my_site2.txt in the file_get_contents (`file_get_contents("http://www.site.com/something")) it works fine.

I've even tried using a different txt file which only contains one link, which had the correct string in the source code.

Iv also tried without quotes: file_get_contents($link)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疯到世界奔溃 2024-12-26 04:23:23

有几件事。

  1. $f 中的文件名将包含换行符。您需要为 file 添加一个额外的标志来防止这种情况:

    $links = file('mysite2.txt', FILE_IGNORE_NEW_LINES);
     $f 中的
  2. 您不需要在正则表达式中转义双引号。

  3. 您确定您的正则表达式在 /> 之前需要一个空格吗?您的正则表达式将匹配 但不匹配

There were a couple of things.

  1. filenames in $f will contain newlines. You need to add an additional flag for file to prevent this:

    $links = file('mysite2.txt', FILE_IGNORE_NEW_LINES);
    
  2. you don't need to escape double quotes in your regex.

  3. are you sure that your regex needs a space before />? Your regex will match <meta pro="test" /> but not <meta pro="test"/>.

蛮可爱 2024-12-26 04:23:23

在 foreach 循环中声明时 $link 的内容可能是一个数组或一个对象。

在 $link 上尝试 var_dump() 并查看其中的内容,这可能会帮助您了解如何操作其内容。

.txt 文件设置如何?

这是一个解决方案: -

如果您只是分隔链接,例如

link1、link2、link3、link4、link5

执行Then foreach

$links = explode( ',' , file_get_content($file) ) ;

然后为该数组

The contents of $link when decalred in the foreach loop is probably an array or an object.

Try var_dump() on $link and see what is within it, this might help you to understand how to manipulate it's contents.

How is you .txt file setup?

Heres a solution:-

If you just sepreate the links like

link1,link2,link3,link4,link5

Then do

$links = explode( ',' , file_get_content($file) ) ;

Then foreach for this array

笑着哭最痛 2024-12-26 04:23:23

只需删除 $f = file_get_contents("$link"); 中的引号

即可使 $f = file_get_contents($link);

Simply remove the quotes from $f = file_get_contents("$link");

to make $f = file_get_contents($link);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文