regex PHP preg_replace在字符串中查找单词并删除其他字符

nhaq1z21  于 2023-01-27  发布在  PHP
关注(0)|答案(1)|浏览(117)

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

  • 动物

字符串可以是这样的:

  • 123-ea-person.jpg
  • 456456-on-Person.jpg
  • a-animal-dog.png

我的结果应该是这样的:

  • 动物

我的方法:

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

输出:
123-ea-.jpg
预期产出:
person
我怎样才能反转模式得到结果呢?
已解决
@Juan thx,我不需要分机号。
解决方案1(@Juan):

strtolower(preg_replace('/(.*)(person|animal)(.*)/i', '$2', '123-ea-person.jpg'));

解决方案2(@user3783243):

strtolower(preg_replace('/(?:person|animal)(*SKIP)(*FAIL)|./i', '', '123-ea-person.jpg'));

结果:
person

wecizke3

wecizke31#

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

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

相关问题