繁体   English   中英

PHP 正则表达式查找包含在 __("STRING_TO_EXTRACT") 中的字符串

[英]PHP Regular expression to find string enclosed in __("STRING_TO_EXTRACT")

对不起,我真的很讨厌正则表达式。 我需要收集我的应用程序中包含在此示例中的所有字符串: __("STRING") 该字符串也可以用单引号括起来。

我用下面的代码试了一下:

$str = "__('match1') __("match2") do_not_include __('match3')";

preg_match_all("/__\(['\"](.*)['\"]\)/", $str, $matches);
var_dump($matches);

但它只能将整个行字符串与 1 个匹配项匹配。 示例结果如下。 请帮我编辑正则表达式,以便它应该能够获得 3 个匹配项。

match1') __("match2") do_not_include __('match3

在此先感谢您的帮助。

您可以使用:

$str = "__('match1') __(\"match2\") do_not_include __('match3')";
preg_match_all('/__\(([\'"])(.*?)\1\)/', $str, $matches);
print_r($matches[2]);

([\\'"])将匹配单引号或双引号并将其捕获在组 #1 中。

.*? 将匹配 0 个或多个字符(非贪婪)

\\1是上述捕获组的反向引用,以确保字符串在 RHS 上用相同的引号关闭。

输出:

Array
(
    [0] => match1
    [1] => match2
    [2] => match3
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM