[英]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.