让我清楚一下我想要实现的逻辑。
但是以" @ "和" #"不要在preg_match_all模式中工作,例如。
$pattern = '/\b(\@abdulcollo|tuskys|\#teamBata|50\% off|baby|\@mystic_false)\b/i';
$string = 'Anga lonely everyday RT @Mystic_False: Heehe @AbdulCollo aneno ka idhi tuskys in lonely woman bana #TeamBata in Kakamega baby! @danaceda @kibalimoreithi @olivermathenge @batakenya @ Tuskys Mega Mall 50% off';
preg_match_all($pattern, $string, $matches);
var_dump($ matched)返回数组下面。
$matches = array('tuskys', 'baby', '50% off');
但我也希望' @ abdulcollo' ,' #TeamBata' ,' @ Mystic_False' ,我逃脱了#34; @"和"#"但他们仍然没有得到匹配......!
任何帮助非常感谢,我想要纯PHP的逻辑。
注意 :我为所有内容小写,例如,在为标记词创建模式时使用小写单词以及降低整个注释字符串,所以这不是任何问题的
答案 0 :(得分:0)
这是因为边界\b
。在非单词字符和非单词字符之间不存在单词边界。所以改变你的正则表达式,
(?:\b|\B)(@abdulcollo|tuskys|#teamBata|50% off|baby|@mystic_false)\b