【问题标题】:Preg Replace Pattern Confusion with Single QuotesPreg 用单引号替换模式混淆
【发布时间】:2015-06-11 10:57:01
【问题描述】:

我有以下模式可以正常工作,但我正在尝试添加单引号的情况,但无论我做什么,我都无法让单引号与该模式一起使用,我尝试转义是等等没有运气!?

$title = preg_replace_callback('/(\"|\()([a-z])/', function($m) {
     return strtoupper($m[0]);
}, $title);

我尝试了以下方法,但似乎不起作用。

'/(\"\'|\()([a-z])/'

【问题讨论】:

  • 试试:/((\"|\')|\()([a-z])/ 这对你有用吗?

标签: php regex preg-replace-callback


【解决方案1】:

只需将所有三个字符都放在一个字符类中。这个\"\' 将寻找双引号以及以下单引号。如果没有,则不会进行替换。

$title = '"foo(bar)"';
echo preg_replace_callback('/[\'"(]([a-z])/', function($m) {
     return strtoupper($m[0]);
}, $title);

输出:

"Foo(Bar)"

【讨论】:

  • '/[\'"(]\K([a-z])/'
  • 做到了,我可以在它之前添加 \s 以确保字符之前有一个空格吗?
  • @AvinashRaj,任何字符大小写前的空格?
  • 提供一个示例以及预期的输出。你的意思是'/\s[\'"(]([a-z])/'
  • @AvinashRaj,如果您致力于 SO 24/7,请参加 moderator ......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 2020-07-25
  • 2021-08-12
  • 1970-01-01
相关资源
最近更新 更多