我有一个字符串,例如:
$foo = 'Hello __("How are you") I am __("very good thank you")'
我知道这是一个奇怪的字符串,但请跟我一起:P
我需要一个正则表达式来查找__之间的内容(“在这里查找内容”)
并把它放在一个数组中.
即正则表达式会找到“你好吗”和“非常好,谢谢你”.
解决方法
试试这个:
preg_match_all('/(?<=__\(").*?(?="\))/s',$foo,$matches); print_r($matches);
意思是:
(?<= # start positive look behind __\(" # match the characters '__("' ) # end positive look behind .*? # match any character and repeat it zero or more times,reluctantly (?= # start positive look ahead "\) # match the characters '")' ) # end positive look ahead
编辑
而正如格雷格所说:有些人不太熟悉环顾四周,将它们排除在外可能更具可读性.然后匹配所有内容:__(“,字符串和”)并在括号内包装与字符串匹配的正则表达式.* ?,以仅捕获这些字符.然后你需要通过$matches [1]获得你的比赛.演示:
preg_match_all('/__\("(.*?)"\)/',$matches); print_r($matches[1]);