duanlu7680 2018-06-29 13:06
浏览 74
已采纳

如何使用preg_replace忽略特定单词

Consider the following:

$string = "Hello, there! Welcome to <>?@#$!& our site<!END!>";

I'm trying to remove everything except for letters, numbers, spaces, and the "special tag" <!END!>

Using preg_replace, I can write this:

$string = preg_replace("/[^A-Za-z0-9 ]/", "", $string);

To remove everything except letters (both capital and lowercase), numbers, and spaces. Now if I wanted to also ignore the <!END!> tag, in theory I could write this:

$string = preg_replace("/[^A-Za-z0-9 <!END!>]/", "", $string);

However this will not specifically ignore the tag <!END!>, but rather any of the characters it contains. So it'll be preserving every <, >, and ! in $string.

The result:

"Hello there! Welcome to <>! our site<!END!>"

But I'm trying to get:

"Hello there Welcome to  our site<!END!>"

Based on my research, it should be possible to include a specific word to ignore in preg_replace by using the \b tags, however "/[^A-Za-z0-9 \b<!END!>\b]/" gave me the same result as above.

Am I doing something wrong?

Live demo: http://sandbox.onlinephpfunctions.com/code/219dc36ab8aa7dfa16e8e623f5f4ba7f4b4b930d

  • 写回答

1条回答 默认 最新

  • doubaomao9304 2018-06-29 13:25
    关注

    You could use a (*SKIP)(*F) solution:

    <!END!>(*SKIP)(FAIL)|[^A-Za-z0-9 ]

    That would match:

    • <!END!>(*SKIP)(FAIL) match <!END!> and then skip that match
    • | or
    • [^A-Za-z0-9 ] Match not using what is specified in the character class

    For example:

    $string = "Hello, there! Welcome to <>?@#$!& our site<!END!>";
    $string = preg_replace("/<!END!>(*SKIP)(FAIL)|[^A-Za-z0-9 ]/", "", $string);
    echo $string;
    

    That will result in:

    Hello there Welcome to our site<!END!>

    Demo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。