Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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/4/regex/18.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_Preg Match All_Data Munging - Fatal编程技术网

PHP:如何匹配文档中所有出现的正则表达式模式

PHP:如何匹配文档中所有出现的正则表达式模式,php,regex,preg-match-all,data-munging,Php,Regex,Preg Match All,Data Munging,我正在对可能(或可能不-视情况而定)在其内容中出现正则表达式模式的文档进行数据搜索 我想编写一个PHP函数来处理文档——该函数的任务是返回文档中所有匹配模式的数组(如果存在),或者如果没有找到匹配项,则返回一个空数组 我确信这涉及到使用PHP函数,但是,我不理解preg_match_all返回的数组的格式。我只想返回匹配字符串的一维(即非嵌套数组),如下所示: <?php $pattern = "^[h].[a-z]{3,4}"; $doc = file_get_conte

我正在对可能(或可能不-视情况而定)在其内容中出现正则表达式模式的文档进行数据搜索

我想编写一个PHP函数来处理文档——该函数的任务是返回文档中所有匹配模式的数组(如果存在),或者如果没有找到匹配项,则返回一个空数组

我确信这涉及到使用PHP函数,但是,我不理解preg_match_all返回的数组的格式。我只想返回匹配字符串的一维(即非嵌套数组),如下所示:

<?php 

   $pattern = "^[h].[a-z]{3,4}";
   $doc = file_get_contents('some_pathname');

   function get_matching_patterns($pattern, $doc){
     $out = array();

     if (strlen($doc) && strlen($pattern)){
        // not sure about this - I don't like the complicated nested array returned
        // by preg_match-all
        preg_match_all($pattern, $doc, $out); 
     }

     return out;
   }
?>
  • 你错过了一个机会$
  • 在您的情况下,只需返回
    $out[0]

$out($missing)。尝试打印r($out)或变量转储。您将看到结构和文档以及模式也缺少$->$doc,$pattern抱歉,在太多语言之间来回切换的问题!。有时候,我忘了PHP需要符号!。我将修复代码段。如果返回多个匹配项,会发生什么情况?。$out[0]是嵌套数组吗?我的意思是,若$out[0]总是保证是一个嵌套数组(当模式匹配时),那个么我可以简单地处理它并返回一个非嵌套的匹配数组。这是您的建议吗(还是我误解了)?
$out[0]
是包含所有匹配项的数组。您的图案没有
$out[1]
。如果您有一个类似于
#([h].[a-z]{3,4}#
(注意括号)的正则表达式,您将在
$out[1]
中找到
[h].
部分。