【问题标题】:PHP preg_replace find a word in string and remove other charactersPHP preg_replace 在字符串中查找一个单词并删除其他字符
【发布时间】:2023-01-26 04:26:14
【问题描述】:

我试图从字符串中删除所有与单词列表不匹配的字符。

我的单词列表可能是:

  • 动物

一个字符串可以是这样的:

  • 123-ea-person.jpg
  • 456456-on-Person.jpg
  • 动物狗.png

我的结果应该是这样的:

  • 动物

我的方法:

preg_replace('/(person|animal)/i', '', '123-ea-person.jpg')

输出:
123-ea-.jpg

预期输出:
person

我怎样才能反转模式以获得结果?

【问题讨论】:

  • 可能是更好的方法,但是:3v4l.org/nvF2V
  • 如果您删除扩展条件,@Syscall 提出的解决方案适用于preg_replace('/(.*)(person|animal)(.*)/i', '$2$4', '123-ea-person.png');

标签: php regex preg-replace


【解决方案1】:

strtolower 使用 PCRE 动词可以实现你的目标:

strtolower(preg_replace('/(?:person|animal)(*SKIP)(*FAIL)|./i', '', '123-ea-person.jpg 456456-on-Person.jpg a-animal-dog.png'));

使用这种方法将跳过 personanimal 匹配项,所有其他匹配项将被替换为空。

https://3v4l.org/pZ9YC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2017-06-29
    相关资源
    最近更新 更多