簡體   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