为了好玩,我正在尝试编写可以扫描网站上的YouTube网址并保存的内容。 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时,我只得到“Array”这个词。我希望看到所有的网址,最好是每行一个。
答案 0 :(得分:1)
注意4chan如何在youtube ID中添加<wbr>
标记,可能是对此类内容的安全措施。您必须首先使用替换从源中删除这些标记。
然后您可以使用正则表达式来匹配源中的所有链接,请记住,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>";
答案 1 :(得分:0)
print_r
用于输出数组:
答案 2 :(得分:0)
您可以使用print_r($url)
或var_dump($url)
。这些是打印数组的标准方法。
答案 3 :(得分: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.";
}
?>