我有一个脚本,用于检查输入链接是否为http://(如果为空)。代码如下:
if(!preg_match('~http://[a-zA-Z0-9]~',$link))
以上代码仅检查http:// links。
我想检查除此之外的多个表达式,例如https://,ftp:// etc。
使用&&和|,没有给出正确的输出。
请帮我写一个可以使用OR(|)运算符匹配多个表达式的正确代码。
感谢。
答案 0 :(得分:2)
您在PHP中不需要多个&&
或||
,您可以使用一个正则表达式检查所有这些协议。将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
。