Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取双大括号内值的正则表达式;{{}";_Php_Regex - Fatal编程技术网

Php 获取双大括号内值的正则表达式;{{}";

Php 获取双大括号内值的正则表达式;{{}";,php,regex,Php,Regex,PHP中的正则表达式,用于获取数组中带“{}}”引号的文本 例如: $str = "This is sample content with a dynamic value {{value1}} and also have more dynamic values {{value2}}, {{value3}}"; 需要输出如下数组所示 array(value1,value2,value3); 使用以下命令: preg_match_all('~\{\{(.*?)\}\}~', $string, $

PHP中的正则表达式,用于获取数组中带“{}}”引号的文本

例如:

$str = "This is sample content with a dynamic value {{value1}} and also have more dynamic values {{value2}}, {{value3}}";
需要输出如下数组所示

array(value1,value2,value3);
使用以下命令:

preg_match_all('~\{\{(.*?)\}\}~', $string, $matches);
var_dump($matches[1]);
输出:

array(3) {
  [0] =>
  string(6) "value1"
  [1] =>
  string(6) "value2"
  [2] =>
  string(6) "value3"
}
这将有助于:

$str = "This is sample content with a dynamic value {{value1}} and also have more dynamic values {{value2}}, {{ value3 }}";
if (preg_match_all("~\{\{\s*(.*?)\s*\}\}~", $str, $arr))
   var_dump($arr[1]);
输出:

array(3) {
  [0]=>
  string(6) "value1"
  [1]=>
  string(6) "value2"
  [2]=>
  string(6) "value3"
}

你试过什么吗?我对正则表达式不是很在行,我试着引用它:它是有效的。但是我需要在花括号内精确匹配数组,因为我必须检查数组是否有索引“1”。你能告诉我没有大括号时,数组索引“1”上的值总是出现吗?这是因为大括号之间的值将由组1匹配。那是因为
()
$matches
数组将首先包含整个匹配项,然后包含匹配组1、2、。。。这就是它的工作原理。我需要在花括号内精确匹配数组,因为我必须检查数组是否有索引“1”。你能告诉我,如果没有大括号,数组索引“1”上的值将始终出现吗?是的,它将始终是
$arr[1]
,因为它与匹配组#1相关,即方括号内的表达式。我有一件小事要做,需要修剪大括号内的空格。例如:如果我这样给出{{value1}。在同一个表达式中可能吗?
preg_match_all('/\{\{([^}]+)\}\}/', $str, $matches);
$array = $matches[1];