我正在尝试编写代码以查看网站网址是否有“=”或“?”在网址
我在$ website(例如www.smith.com?page=1)中的网址应该被找到但是它不在以下代码中
$cleanurl_text = "You appear to have a clean url structure.";
$regex = '/=/i';
if (preg_match($regex, $website))
{
$cleanurl_text = "You do not appear to have a clean url structure.";
}
$regex = '/?/i';
if (preg_match($regex, $website))
{
$cleanurl_text = "You do not appear to have a clean url structure.";
}
答案 0 :(得分:4)
如果您只是匹配常量单个字符,则正则表达式不是最好的方法。更有效的正则表达式为/=|\?/
,可以测试=
或?
。表达式不起作用的原因是因为?
是需要转义的字符。您可以了解正则表达式here。
答案 1 :(得分:1)
您不应该使用正则表达式,而应使用http://php.net/manual/en/function.strstr.php
无论如何,如果你仍然想要你的正则表达式,你应该做这样的事情
$regex = '/=|\?/';
if (preg_match($regex, $website))
{
$cleanurl_text = "You do not appear to have a clean url structure.";
}
答案 2 :(得分:0)
您需要使用反斜杠转义这些字符。
答案 3 :(得分:0)
正则表达式适用于PATTERNS - 复杂(ish)字符串表达式,否则使用子字符串搜索表达这些表达式会非常繁琐。对于你正在做的单个角色,做法更有效率:
if (strpos($website, '=') !== FALSE) {
$cleanurl_text = "You do not appear to have a clean url structure.";
}
正则表达式具有相对较高的启动成本,因为必须编译模式,初始化正则表达式状态引擎等等......所有这些只是为了寻找单个字符。相比之下,strpos将是“免费的”。