我试图从字符串中删除所有与单词列表不匹配的字符。
我的词汇表可能是:
- 人
- 动物
字符串可以是这样的:
- 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
1条答案
按热度按时间wecizke31#
使用PCRE动词的
strtolower
可以实现您的目标:利用这种方法,将跳过
person
或animal
匹配,所有其它匹配将被空替换。https://3v4l.org/pZ9YC