可能重复:
故障排除"preg_replace():未知修饰符"
我检测URL的模式是:'b[(http://|https://)]*[www]*['.]*('S+'.[a-z]{2,})/*
,而我的替换模式是'1'2
。然而,它似乎不起作用,因为我得到了这个错误:
警告:preg_replace():[…][…]中1
行上的未知修饰符"/"
我做错了什么?
此外,如果有人能提到如何检测一个URL中子域(如name.subdomain.canada.gov)可能有多个句点的事实,我该如何无限检测?我知道我可以有'S*'.*
,但这不是像"可能有另一组子域和另一个句点,但不一定",如果还有另外五个子域的序列呢?
我的实际用法是:preg_replace("'b[(http://|https://)]*[www]*['.]*('S+'.[a-z]{2,})/*", "'1'2", $text);
PHP需要一个环绕的字符来分隔正则表达式修饰符和正则表达式即preg_replace("~yourregex~",...)
但是表达式中还有更多错误,也应该进行修复。你用错了[]和()。对于一个简单的ulr匹配器来说,一个更好的表达式可能是-对于您的特殊场景,必须根据您的需求进行更改:
"~(?:http://|https://)(?:[a-z0-9_-]+'.)+(?:[a-z0-9_-]+)~"