簡體   English   中英

php regexp“AND”

[英]php regexp “AND”

我必須為我工作的項目創建翻譯。 最簡單的解決方案是將所有stings更改為functioncall(string)以便每次都能獲得唯一的字符串哈希值。

我的代碼有以下不同的t()函數用途:

<label for="anon"><?php echo t('anonymously? (20% extra)')?></label>

exit(t("Success! You made {amount} oranges out of it!", array('amount' => $oranges)));

echo t('You failed.');

我目前的正則表達式是:

$transMatches = preg_match_all('/[^a-z]t\([^)(]+/m', $contents, $matches);

問題是它在#1例子中失敗,匹配“匿名?”。 我真正想要達到的目標是:“匹配t(然后匹配'或”然后匹配除了匹配'或'之外的任何內容和“)

想法: t\\(['|"](.*?)[^'|"]\\)?

我無法使上面的正則表達式工作。

我怎么能在regexp中做AND,以便匹配“['|”] AND)“OR”['|“] AND,array”

請幫我解決正則表達式並解釋它的工作原理。

謝謝!

解析函數的參數可以是相當復雜的 ,但你需要分析僅(為簡單起見)可以總是假定是字符串逃過或者與第一個參數'"因此這些正則表達式可以匹配’

"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"
\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*'

因此你只需要匹配:

'~[^\w\d]t\(\s*("[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\')~i'

[^\\w\\d]假設沒有test1t匹配, \\s*讓你容忍空間......

有了這個正則表達式,你將獲得如下結果:

'anonymously? (20% extra)'
"Success! You made {amount} oranges out of it!"

我無法想象你需要解析數組的情況,你能在評論/問題中描述它嗎?

這是你需要的嗎?

在正則表達式中使用反向引用 - http://www.regular-expressions.info/brackets.html

但看起來很奇怪你在做什么,為什么? 你是否用一些結果替換了函數調用? 為什么不讓它調用函數並從中返回翻譯?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM