Php 预匹配所有可能的变化
我想知道一根弦的三个部分。字符串可以是 {identifier}、{identifier:foo}、{identifier:foo | bar}或{identifier | bar} 字符串可以在$content中出现多次这就是为什么使用preg\u match\u all 目前我有Php 预匹配所有可能的变化,php,preg-match-all,Php,Preg Match All,我想知道一根弦的三个部分。字符串可以是 {identifier}、{identifier:foo}、{identifier:foo | bar}或{identifier | bar} 字符串可以在$content中出现多次这就是为什么使用preg\u match\u all 目前我有 preg_match_all( '#\{'.preg_quote($identifier).':?([^\}|]+)?\|?([^\}]+)?\}#i', $content, $matches ); 它适用于除{
preg_match_all( '#\{'.preg_quote($identifier).':?([^\}|]+)?\|?([^\}]+)?\}#i', $content, $matches );
它适用于除{identifier | bar}之外的所有版本,但不适用于其他版本
编辑:
$matches应该是这样的,在$content中只有一个外观
它很容易使所有这些与一个单一的表达。但是你想让$matches的结构看起来怎么样?我不明白,对我来说是有效的:是的,只有{identifier | bar}在我的情况下不起作用。你确定要使用identifier | bar而不是identifier:bar吗?对不起,伙计们-正如@Leandro提到的,这很好,问题出在应用程序的其他地方
Array
(
[0] => Array
(
[0] => {timezone:foo|bar}
)
[1] => Array
(
[0] => foo
)
[2] => Array
(
[0] => bar
)
)