Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 寻找一个简单的url解析regexp_Php_Regex - Fatal编程技术网

Php 寻找一个简单的url解析regexp

Php 寻找一个简单的url解析regexp,php,regex,Php,Regex,我正在寻找一个简单的正则表达式来获取一个文本块,解析出其中的所有URL,然后返回它们。URL基本上将替换为,以此类推。因此,我不认为它需要非常彻底或允许各种疯狂的url方案和非英语字符 这是我想出的一个正则表达式: %http[s]?://[A-z0-9/\.\-_]+%i 它将匹配以http://或https://开头的所有字符串,后跟至少一个以下字符:A-z 0-9、点、正斜杠(/)、下划线、连字符(-),不区分大小写 可以对其进行任何改进吗?您不是在验证URL,只是在解析文本以查找URL

我正在寻找一个简单的正则表达式来获取一个文本块,解析出其中的所有URL,然后返回它们。URL基本上将替换为
,以此类推。因此,我不认为它需要非常彻底或允许各种疯狂的url方案和非英语字符

这是我想出的一个正则表达式:

%http[s]?://[A-z0-9/\.\-_]+%i
它将匹配以http://或https://开头的所有字符串,后跟至少一个以下字符:A-z 0-9、点、正斜杠(/)、下划线、连字符(-),不区分大小写


可以对其进行任何改进吗?

您不是在验证URL,只是在解析文本以查找URL,因此只需使用
%\bhtps?://\S+%i


如果你想检查这样的url是否在
中,它仍然在
@ClickUpvote中运行-我希望你不是那个投票否决我的人。。。我已经更新了我的答案,包括了你误解的
,如果我允许在http:///之后使用所有字符,那么有人可以写:
http://“>//此处为恶意代码
,它将被更改为:
//此处为恶意代码
如果它是正确的URL结构,它将不会验证,但它必须验证,因此不允许所有字符,否则它将对XSS@ClickUpvote-字符串<代码>http://www.blab-blah-blah.zero
具有有效的结构,但它不是一个有效的URL。请搜索“URL链接”。这个问题经常被问到。
%<a\s[^>]*\bhref=['"](https?://\S+)["']%i
var_dump(filter_var($url, FILTER_VALIDATE_URL));