Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 regex返回<;选项>;价值观_Php_Regex_Pattern Matching_Web Scraping - Fatal编程技术网

PHP regex返回<;选项>;价值观

PHP regex返回<;选项>;价值观,php,regex,pattern-matching,web-scraping,Php,Regex,Pattern Matching,Web Scraping,我只是想知道你是否可以帮我完成一个小任务,我正在尝试用php做 我在一个文件中有这样的文本: (random html) ... <OPTION VALUE="195" SELECTED>Physical Chem <OPTION VALUE="239">Physical Chem Lab II <OPTION VALUE="555">Physical Chem for Engineers

我只是想知道你是否可以帮我完成一个小任务,我正在尝试用php做

我在一个文件中有这样的文本:

    (random html)
    ...
    <OPTION VALUE="195" SELECTED>Physical Chem  
    <OPTION VALUE="239">Physical Chem Lab II  
    <OPTION VALUE="555">Physical Chem for Engineers            
    ...
    (random html)
使用此函数的返回值:

数组([0]=>OPTION VALUE=“195[1]=>195)数组([0]=>OPTION VALUE=“195[1]=>195)

我怎样才能归还所有的#

我是模式匹配的新手,我读过的教程对我没什么帮助,所以非常感谢

试试这个:

preg\u match\u all(“/选项值=\”([0-9])+\“/”,$data,$matches)

编辑

我误解了你的问题。更改为
preg\u match\u all()

preg\u match\u all(“/选项值=\”([0-9])+\“/”,$data,$matches)

编辑


我误解了你的问题。更改为
preg\u match\u all()

尝试使用
preg\u match\u all()


尝试使用
preg\u match\u all()


我认为你做得对。PHP返回[0]中的完全匹配,然后将捕获的组(parenthase)作为其他组返回

看看这个:
我认为你做得对。PHP返回[0]中的完全匹配,然后将捕获的组(parenthase)作为其他组返回

看看这个:

preg\u match将返回仅包含第一个匹配项的数组。数组的第一个索引将返回与完整正则表达式的匹配,第二个索引与括号中的捕获组匹配,请尝试以下操作以了解其工作原理:

preg_match("/(OPTION) VALUE=\"([0-9]*)/", $data, $matches);
    print_r($matches);
您将看到它输出以下内容:

Array
(
    [0] => OPTION VALUE="195
    [1] => OPTION
    [2] => 195
)
数组[0]包含完全匹配的数据,数组[1]包含来自第一个捕获组(选项)的数据,数组[2]包含来自第二个捕获组([0-9]*)的数据

为了匹配多个事件,需要使用preg_match_all函数。如果我们将此应用于您的原始代码,如下所示:

preg_match_all("/OPTION VALUE=\"([0-9]*)/", $data, $matches);
    print_r($matches);
我们得到:

Array
(
    [0] => Array
        (
            [0] => OPTION VALUE="195
            [1] => OPTION VALUE="239
            [2] => OPTION VALUE="555
        )

    [1] => Array
        (
            [0] => 195
            [1] => 239
            [2] => 555
        )

)

我希望这能把事情说清楚

preg_match将返回仅包含第一个匹配项的数组。数组的第一个索引将返回与完整正则表达式的匹配,第二个索引与括号中的捕获组匹配,请尝试以下操作以了解其工作原理:

preg_match("/(OPTION) VALUE=\"([0-9]*)/", $data, $matches);
    print_r($matches);
您将看到它输出以下内容:

Array
(
    [0] => OPTION VALUE="195
    [1] => OPTION
    [2] => 195
)
数组[0]包含完全匹配的数据,数组[1]包含来自第一个捕获组(选项)的数据,数组[2]包含来自第二个捕获组([0-9]*)的数据

为了匹配多个事件,需要使用preg_match_all函数。如果我们将此应用于您的原始代码,如下所示:

preg_match_all("/OPTION VALUE=\"([0-9]*)/", $data, $matches);
    print_r($matches);
我们得到:

Array
(
    [0] => Array
        (
            [0] => OPTION VALUE="195
            [1] => OPTION VALUE="239
            [2] => OPTION VALUE="555
        )

    [1] => Array
        (
            [0] => 195
            [1] => 239
            [2] => 555
        )

)
我希望这能把事情说清楚