使用 PHP 从字符串中提取 URL

新手上路,请多包涵

我们如何使用 PHP 识别字符串中的 URL 并将它们存储在数组中?

无法使用 explode 功能如果 URL 包含逗号,则不会给出正确的结果。

原文由 Azraar Azward 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

正则表达式是您问题的答案。接受对象操纵器的答案..它所缺少的只是排除“逗号”,因此您可以尝试使用此代码排除它们并给出 3 个单独的 URL 作为输出:

 $string = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/";

preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $string, $match);

echo "<pre>";
print_r($match[0]);
echo "</pre>";

输出是

Array
(
    [0] => http://google.com
    [1] => https://www.youtube.com/watch?v=K_m7NEDMrV0
    [2] => https://instagram.com/hellow/
)

原文由 aampudia 发布,翻译遵循 CC BY-SA 3.0 许可协议

$urlstring = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/";

preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $urlstring , $result);

print_r($result[0]);

原文由 Prassd Nidode 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题