获取两个标签之间的文本

OHL*_*ÁLÁ 1 php preg-match

如何从以下标记中获取值:

{desc=1}
This is a description
{/desc}
Run Code Online (Sandbox Code Playgroud)

中的数字{desc=1}正在发生变化.我也希望得到这个价值.

更新:

例如,也可能desc在字符串中更多

{desc=1}
    This is a description
{/desc} 
{desc=2}
    other description
{/desc}
...
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 5

这将捕获您想要的一切.

$data = <<<EOT
{desc=1}
    This is a description
{/desc}
{desc=2}
    other description
{/desc}
EOT;

preg_match_all('#{desc=(\d+)}(.*?){/desc}#s', $data, $matches);

var_dump($matches);
Run Code Online (Sandbox Code Playgroud)

输出:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(44) "{desc=1}
    This is a description
{/desc}"
    [1]=>
    string(40) "{desc=2}
    other description
{/desc}"
  }
  [1]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
  [2]=>
  array(2) {
    [0]=>
    string(29) "
    This is a description
"
    [1]=>
    string(25) "
    other description
"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @ iUngi,PHP允许你使用几个不同的字符来逃避正则表达式(除了`/`).我使用它,所以如果我不得不按字面意思使用它,我就不必用`/ /`来逃避`/`. (2认同)