0

只是为了好玩,我正在尝试编写一些可以扫描网站以查找 YouTube URL 并保存它们的代码。URL 不会在标签内,所以我需要使用正则表达式。我把那部分记下来了。但是我如何从数组中回显 URL?

到目前为止我所拥有的:

<?php

$website = file_get_contents('http://boards.4chan.org/mu/res/41283979');
$reg_exURL = "/(?:https?://)?(?:www\.)?youtu(?:be\.com/watch\?(?:.*?&(?:amp;)?)?v=|\.be/)([\w‌​\-]+)(?:&(?:amp;)?[\w\?=]*)?/";

if(preg_match($reg_exURL, $website, $urls)) {
    // Echo all values in the array
    foreach ($urls as $url) {
        echo $url;
    }
} else {
    echo "No URLs Found.";
}

?>

但是当我回显 $url 时,我只会得到“数组”这个词。我想查看所有 URL,最好每行一个。

4

4 回答 4

1

请注意 4chan 如何<wbr>在 youtube ID 中添加标签,这可能是为了防止此类事情发生。您必须首先通过替换从源中删除这些标签。

然后,您可以使用正则表达式匹配源中的所有链接,请记住,youtube 视频 ID 由字母、数字、_、- 组成,并且始终为 11 个字符长。

$website = str_replace("<wbr>","",file_get_contents('http://boards.4chan.org/mu/res/41283979'));

$regex = "/(https?:\/\/)?(?:www\.)?youtube\.com\/watch\?v=[A-Za-z0-9_-]{11}/";
preg_match_all($regex , $website, $urls, PREG_SET_ORDER); 

foreach ($urls as $url)
    echo $url[0] . "<br>";
于 2013-11-05T05:05:43.730 回答
0

print_r用于输出数组:

http://php.net/manual/en/function.print-r.php

于 2013-11-05T02:20:22.090 回答
0

您可以只使用print_r($url)var_dump($url)。这些是打印数组的标准方法。

于 2013-11-05T02:20:30.220 回答
0

您可以使用foreach循环来执行此操作。

<?php

$website = file_get_contents('http://boards.4chan.org/mu/res/41283979');
$reg_exURL = "/(?:https?:\/\/)?(?:www\.)?youtu(?:be\.com\/watch\?(?:.*?&(?:amp;)?)?v=|\.be\/)([\w‌​\-]+)(?:&(?:amp;)?[\w\?=]*)?/";
if(preg_match($reg_exURL, $website, $urls)) {
    // Echo all values in the array
    foreach ($urls as $url) {
        echo $url;
    }
} else {
    echo "No URLs Found.";
}

?>
于 2013-11-05T02:22:08.230 回答