首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP regex函数更改文本大小写

问使用PHP regex函数更改文本大小写
EN

Stack Overflow用户
提问于 2014-07-08 19:19:07
回答 1查看 68关注 0票数 1

我正在尝试实现一个客户需求,他们可以使用任意正则表达式来匹配任意文本中的模式,然后修改部分或所有匹配的大小写。例如(sp)(\d+),它是一个搜索表达式,用于查找字母组合"sp“后跟一个或多个数字的所有实例。然后,相应的表达式将sp大写如下:\U$1$2

我们通过一个web接口实现对正则表达式的支持,该接口发送到一个PHP脚本,该脚本使用与preg_match()和preg_replace() PHP perl兼容的regex函数来分别匹配和更改输入。

我尝试使用preg_replace_callback,因为它传递了您自己编写的匹配数组来回调,但问题是,在不知道匹配和替换模式以及预先修改的输入文本的情况下,据我所知,我们无法可靠地确定哪个匹配来自正则表达式的哪个组件,因此哪个匹配需要被大写或小写。

有没有人尝试过类似的东西,并取得了成功?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-07-09 00:55:37

这样就行了,您可以让应用程序要求单词匹配正则表达式不应包含组,但使用$match[0]可以确保整个单词匹配是大写的。

代码语言:javascript
复制
function _UpperCase_Preg_Matches($match){
    return strtoupper($match[0]);
}

$subject = "Item sp001 and item sp002 are good.";

print preg_replace_callback( "/\bsp\d+\b/i", _UpperCase_Preg_Matches, $subject);

输出:

代码语言:javascript
复制
Item SP001 and item SP002 are good.

在我之前构建的一个应用程序中,我们有一个大小写单词的正则表达式,它采用一系列小规则并将它们连接在一起。

小规则应该是像PC\d{6},LAP\d{6}和SERV\d{3}这样的。然后,它们将在以下正则表达式/\b(?: rule1 | rule2 | rule3 )\b/i中连接在一起。并且匹配被传递到一个回调中以大小写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24630445

复制
相关文章

相似问题

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