eregi被弃用的问题

时间:2011-02-10 16:56:17

标签: php-5.3

我已经升级了PHP,现在我得到了eregi弃用的错误。

我在网上搜索了一下,发现我可以使用preg但不确定如何正确更改此代码

eregi("^$row->baseUrl", $_SERVER["SCRIPT_NAME"])

我的尝试是:

preg_match("^$row->baseUrl/i", $_SERVER["SCRIPT_NAME"])

但我不确定这是否正确。

有人可以检查并提出建议吗?

2 个答案:

答案 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