Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 pcre-如何管理职位?_Php_Pcre - Fatal编程技术网

php pcre-如何管理职位?

php pcre-如何管理职位?,php,pcre,Php,Pcre,我的目标是找到h2和h2标记后的数据之间的数据。 仅找到与h2相关的数据 h2标记后的数据有时以div结束,有时以h2标记结束 正如我在第二种情况下所理解的,内部prce位置在h2标记内移动,因此php找不到第二个h2标记 我要警告你,因为它不是一种常规语言。相反,使用DOM操纵器,如。不过,我还是会回答你的问题 问题在于。*存在。正则表达式试图匹配字符串,这意味着它们总是尽可能多地匹配。在本例中,.*将匹配0个以上字符。这将一直到字符串的结尾,然后开始,直到找到表达式的下一部分 <?ph

我的目标是找到h2和h2标记后的数据之间的数据。 仅找到与h2相关的数据

h2标记后的数据有时以div结束,有时以h2标记结束

正如我在第二种情况下所理解的,内部prce位置在h2标记内移动,因此php找不到第二个h2标记

我要警告你,因为它不是一种常规语言。相反,使用DOM操纵器,如。不过,我还是会回答你的问题

问题在于。*存在。正则表达式试图匹配字符串,这意味着它们总是尽可能多地匹配。在本例中,.*将匹配0个以上字符。这将一直到字符串的结尾,然后开始,直到找到表达式的下一部分
<?php
$s = "<h2>1</h2>unstructed string1<h2>2</h2>unstructed string2<div>some data</div>";

preg_match_all("`<h2>(.*)</h2>(.*)(<h2|<div)`isU", $s, $m);

var_export($m);

?>

result is 
array (
  0 => 
  array (
    0 => '<h2>1</h2>unstructed string1<h2',
  ),
  1 => 
  array (
    0 => '1',
  ),
  2 => 
  array (
    0 => 'unstructed string1',
  ),
  3 => 
  array (
    0 => '<h2',
  ),
)
<h2>(.*?)</h2>(.*?)(?=<\w+>)