我已经升级了PHP,现在我得到了eregi弃用的错误。
我在web上做了一些搜索,发现我可以使用preg代替,但不确定如何正确地更改此代码
eregi("^$row->baseUrl", $_SERVER["SCRIPT_NAME"])我的尝试是:
preg_match("^$row->baseUrl/i", $_SERVER["SCRIPT_NAME"])但我不确定这是否正确。
有人能检查一下并给出建议吗?
发布于 2011-02-11 00:59:42
你根本不需要正则表达式:
strcasecmp(substr($_SERVER["SCRIPT_NAME"], 0, strlen($row->baseUrl)), $row->baseUrl) === 0这将获取最多具有相同长度的$row->baseUrl的$_SERVER["SCRIPT_NAME"]前缀,并使用strcasecmp进行不区分大小写的比较。
但是,如果你想在PHP’s PCRE functions中使用正则表达式,你需要使用delimiters (这里是/,就像你尝试的那样),并正确地引用值:
"/^".preg_quote($row->baseUrl, "/")."/i"发布于 2011-02-11 15:39:38
正如Gumbo所建议的,您不需要使用正则表达式来解决您的特定问题。但是,您应该使用stripos()来搜索字符串。
<?php
// script name is at the start of the string
stripos("{$_SERVER['SCRIPT_NAME']}/", $row->baseUrl) === 0;
// or; string name exists within the string
stripos("{$_SERVER['SCRIPT_NAME']}/", $row->baseUrl) !== false;您也可以使用strpos(),它是区分大小写的等价物。
如果要使用preg_match,则正则表达式应为:
preg_match("#^{$_SERVER['SCRIPT_NAME']}/#i", $row->baseUrl) === 1https://stackoverflow.com/questions/4960153
复制相似问题