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