首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不推荐使用eregi的问题

不推荐使用eregi的问题
EN

Stack Overflow用户
提问于 2011-02-11 00:56:17
回答 2查看 195关注 0票数 0

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

我在web上做了一些搜索,发现我可以使用preg代替,但不确定如何正确地更改此代码

代码语言:javascript
复制
eregi("^$row->baseUrl", $_SERVER["SCRIPT_NAME"])

我的尝试是:

代码语言:javascript
复制
preg_match("^$row->baseUrl/i", $_SERVER["SCRIPT_NAME"])

但我不确定这是否正确。

有人能检查一下并给出建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-11 00:59:42

你根本不需要正则表达式:

代码语言:javascript
复制
strcasecmp(substr($_SERVER["SCRIPT_NAME"], 0, strlen($row->baseUrl)), $row->baseUrl) === 0

这将获取最多具有相同长度的$row->baseUrl$_SERVER["SCRIPT_NAME"]前缀,并使用strcasecmp进行不区分大小写的比较。

但是,如果你想在PHP’s PCRE functions中使用正则表达式,你需要使用delimiters (这里是/,就像你尝试的那样),并正确地引用值:

代码语言:javascript
复制
"/^".preg_quote($row->baseUrl, "/")."/i"
票数 1
EN

Stack Overflow用户

发布于 2011-02-11 15:39:38

正如Gumbo所建议的,您不需要使用正则表达式来解决您的特定问题。但是,您应该使用stripos()来搜索字符串。

代码语言:javascript
复制
<?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,则正则表达式应为:

代码语言:javascript
复制
preg_match("#^{$_SERVER['SCRIPT_NAME']}/#i", $row->baseUrl) === 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4960153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档