【问题标题】:php regex to read select form with select fieldphp正则表达式读取带有选择字段的选择表单
【发布时间】:2014-06-05 06:17:01
【问题描述】:

您好,我对基于以下问题的正则表达式有疑问:
问题: [php-regex-to-read-select-form][1]

我希望正则表达式通过的 HTML 代码

<select name="List">
    <option selected="selected" value="HAR">HAR</option>
    <option value="HAY">HAY</option>
    <option value="ZZZ">ZZZ</option>
</select>

我目前拥有的php如下:

preg_match_all( '@(<option value="([^"]+)">([^<]+)<\/option>)@', $html, $viewstate);

    echo "<pre>";
    print_r($viewstate);
    echo "</pre>";
    die();

输出如下:

Array
(
    [0] => Array
        (
            [0] => HAY
            [1] => ZZZ
        )

    [1] => Array
        (
            [0] => HAY
            [1] => ZZZ
        )

    [2] => Array
        (
            [0] => HAY
            [1] => ZZZ
        )

    [3] => Array
        (
            [0] => HAY
            [1] => ZZZ
        )

)

所以我有点困惑为什么它会多次创建结果,现在知道如何让它获得带有所选属性集的&lt;option 标记。

【问题讨论】:

  • 查看手册。这是多次,因为您正在使用组。但是还有更多,在浏览器中检查源代码,你会看到另一个输出。基本上第一组是多余的。第 0 组包含整个 &lt;option&gt;&lt;/option&gt;,第 2 组包含值属性,第 3 组包含介于 &lt;option&gt;&lt;/option&gt; 之间的值。专业提示:如果您不熟悉正则表达式,请使用 html-parser。它更容易和可靠

标签: php arrays regex selected


【解决方案1】:

您的代码返回以下内容:

Array ( 
    [0] => Array ( 
        [0] => <option value="HAY">HAY</option>
        [1] => <option value="ZZZ">ZZZ</option>
    ) 
    [1] => Array ( 
        [0] => <option value="HAY">HAY</option>
        [1] => <option value="ZZZ">ZZZ</option>
    ) 
    [2] => Array ( // all values
        [0] => HAY 
        [1] => ZZZ 
    ) 
    [3] => Array ( // all text for the option
        [0] => HAY 
        [1] => ZZZ 
    ) 
) 

因此,您可以根据自己的用途使用。当您在网页中打印时,它似乎在重复结果。但实际上,它给出了正确的输出。

现在,如果您想使用这些值,则可以使用 $viewstate[2],对于选项文本,您可以使用 $viewstate[3]。谢谢,这可能会对您有所帮助。

同理,如果要获取选中的值($viewstate[2])/text($viewstate[3]),那么可以使用如下:

preg_match_all( '@(<option selected="selected" value="([^"]+)">([^<]+)<\/option>)@', $html, $viewstate);

Array ( 
    [0] => Array ( 
        [0] => <option value="HAR" selected="selected">HAR</option>
    ) 
    [1] => Array ( 
        [0] => <option value="HAR" selected="selected">HAR</option>
    ) 
    [2] => Array ( 
        [0] => HAR 
    ) 
    [3] => Array ( 
        [0] => HAR 
    ) 
) 

【讨论】:

    【解决方案2】:

    我在这里写了一个函数来生成选择选项列表的数组键值Sample code

    从我检查其他网站的 html 的国家组合框中的列表中获取一个数组。

    希望有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-30
      • 2011-06-18
      • 2011-10-29
      • 2021-05-16
      • 2015-01-11
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多