我有一个脚本,它检查输入链接是否为http://(如果为空)。代码如下:
if(!preg_match('~http://[a-zA-Z0-9]~',$link))
以上代码仅检查 http://链接。
我想检查除此之外的多个表达式,例如 https://、ftp://等。
使用 && 和 | 无法提供正确的输出。
请帮我编写一个正确的代码,可以使用 OR (|) 运算符匹配多个表达式。
谢谢。
最佳答案
您不需要在 PHP 中使用多个 &&
或 ||
,您可以使用一个正则表达式检查所有这些协议(protocol)。将 f
和 ht
分组到可选的非捕获组中,然后将 s
设为可选。
if(!preg_match('~(?:f|ht)tps?://[a-zA-Z0-9]~',$link))
演示:https://regex101.com/r/67qiGQ/1
另一种方法可能是 http://php.net/manual/en/function.parse-url.php ,然后检查 PHP_URL_SCHEME
。
关于php - 检查 preg_match 函数中的多个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41658504/