我已经升级了PHP,现在我得到了eregi弃用的错误。
我在网上搜索了一下,发现我可以使用preg但不确定如何正确更改此代码
eregi("^$row->baseUrl", $_SERVER["SCRIPT_NAME"])
我的尝试是:
preg_match("^$row->baseUrl/i", $_SERVER["SCRIPT_NAME"])
但我不确定这是否正确。
有人可以检查并提出建议吗?
答案 0 :(得分:1)
根本不需要正则表达式:
strcasecmp(substr($_SERVER["SCRIPT_NAME"], 0, strlen($row->baseUrl)), $row->baseUrl) === 0
这会抓取$_SERVER["SCRIPT_NAME"]
的前缀,其长度最多为$row->baseUrl
,并使用strcasecmp
进行不区分大小写的比较。
但是如果你想使用PHP’s PCRE functions的正则表达式,你需要使用delimiters(这里/
就像你想的那样)并正确引用值:
"/^".preg_quote($row->baseUrl, "/")."/i"
答案 1 :(得分:0)
正如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) === 1