gpt4 book ai didi

php - 如何从文本字符串中获取 URL?

转载 作者:搜寻专家 更新时间:2023-10-31 21:37:17 26 4
gpt4 key购买 nike

我有一个包含 URL 和其他文本的字符串。我想将所有 URL 放入 $matches 数组中。但是以下代码不会将所有 URL 都放入 $matches 数组中:

$matches = array();
$text = "soundfly.us schoollife.edu hello.net some random news.yahoo.com text http://tinyurl.com/9uxdwc some http://google.com random text http://tinyurl.com/787988 and others will en.wikipedia.org/wiki/Country_music URL";
preg_match_all('$\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$i', $text, $matches);
print_r($matches);

以上代码将得到:

http://tinyurl.com/9uxdwc
http://google.com
http://tinyurl.com/787988

.

但缺少以下 4 个网址:

schoollife.edu 
hello.net
news.yahoo.com
en.wikipedia.org/wiki/Country_music

能否请你举个例子告诉我,我如何修改上面的代码来获取所有的URL

最佳答案

这是你需要的吗?

$matches = array();
$text = "soundfly.us schoollife.edu hello.net some random news.yahoo.com text http://tinyurl.com/9uxdwc some http://google.com random text http://tinyurl.com/787988 and others will en.wikipedia.org/wiki/Country_music URL";
preg_match_all('$\b((https?|ftp|file)://)?[-A-Z0-9+&@#/%?=~_|!:,.;]*\.[-A-Z0-9+&@#/%=~_|]+$i', $text, $matches);
print_r($matches);

我将协议(protocol)部分设为可选,添加使用点分隔域和 TLD 以及“+”以在该点之后获取完整字符串(TLD + 额外信息)

结果是:

[0] => soundfly.us 
[1] => schoollife.edu
[2] => hello.net
[3] => news.yahoo.com
[4] => http://tinyurl.com/9uxdwc
[5] => http://google.com
[6] => http://tinyurl.com/787988
[7] => en.wikipedia.org/wiki/Country_music

也适用于 IP 地址,因为强制存在一个点。使用字符串“192.168.0.1”和“192.168.0.1/test/index.php”进行测试

关于php - 如何从文本字符串中获取 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249810/

26 4 0
文章推荐: php - XenForo 模板编译器如何解释 xen :title tag?
文章推荐: php - 在执行 AJAX 的 JS 上重新定义 SetTimeInterval,这会向服务器发送垃圾邮件吗?
文章推荐: php - 使
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com