【问题标题】:PHP: replace characters and make exceptions (preg_replace)PHP:替换字符并产生异常(preg_replace)
【发布时间】:2011-04-15 02:19:06
【问题描述】:

我该怎么做:

  • 使用preg_replace() 替换单词中的字符,但使 如果它们是 a 的一部分,则例外 某个词。
  • 将大写字符替换为 大写替换,即使 替换是小写和副 反之亦然。

示例:

$string = 'Newton, Einstein and Edison. end';  
echo preg_replace('/n/i', '<b>n</b>', $string); 

来自:newton,Einstein an d Edison。 end
至:Newton,Einstein and Edison。结束

在这种情况下,我希望替换所有 n 字母,除非它们是单词 end 的一部分,并且 Newton 不应更改为 newton

【问题讨论】:

    标签: php preg-replace uppercase lowercase


    【解决方案1】:
    echo preg_replace('/((?<!\be)n|n(?!d\b))/i', '<b>\1</b>', $string);
    

    它匹配任何前面没有[单词边界+ e]或后面没有[d +单词边界]的字母'n'。

    一般情况:/((?&lt;!\b$PREFIX)$LETTER|$LETTER(?!$SUFFIX\b))/i'

    【讨论】:

    • 我会在匹配字母后做look-behind:/$LETTER(?&lt;!\b$PREFIX$LETTER)(?!$SUFFIX\b)/i
    • @Gumbo,非常感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2011-01-29
    • 1970-01-01
    • 2016-08-14
    相关资源
    最近更新 更多