Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 从HTML读取属性值_Php_Html Parsing - Fatal编程技术网

Php 从HTML读取属性值

Php 从HTML读取属性值,php,html-parsing,Php,Html Parsing,我将HTML存储在字符串中。标记包含名为initval和endval的表单input字段,它们是我需要的value属性值。如何从这个字符串标记中获取它们 <form id="compute"> <input type="hidden" name="initval" value="tal:00far" /> <input type="hidden" name="endval" value="utl:80er" /> </form> 如果

我将HTML存储在字符串中。标记包含名为initval和endval的表单
input
字段,它们是我需要的
value
属性值。如何从这个字符串标记中获取它们

<form id="compute">
   <input type="hidden" name="initval" value="tal:00far" />
   <input type="hidden" name="endval" value="utl:80er" />
</form>

如果我没弄错你的问题, 在HTML中


编辑:看来我的问题搞错了,对不起:-(

假设结构非常可靠,请尝试以下操作:

$htmlCode = "...";
$matches = array();

if (preg_match_all('/name="(initval|endval)"\s+value="([^"]+)"/', $htmlCode, $matches)) {
    $formValues = array_combine($matches[1], $matches[2]);
} else {
   // error
}

这假设
名称
属性之间只有空格,如果它们不同,则需要做一个小的更改。返回一个数组,其中整个regexp匹配位于
[0]
,然后各个组在其相应位置进行匹配
[1]
&
[2]
,数组组合将一个作为键,一个作为值,并将其组合在一起,以便进行关联查找以获得结果。

尝试使用HTMLDOMLIBRARKS解析html。

@Jere:一般来说,你不能这么说。这取决于html代码以及你试图使用它做什么。@Jere:这不是专业提示,这通常是错误的,它是正确的这是一个缺乏理解的提示。表单是否总是这样,或者它可能会变化很大、无效等等?@Gumbo今天已经有了这个论点,希望人们能够了解解析和小文本匹配/更改之间的区别:表单不是一个提交的表单。它只是存储在字符串中的标记,所以我的意思是获取v通过字符串操作获得值。如果你想这样做,你可以随时删除你的答案,以避免让未来的读者感到困惑。所有这些评论也会随之消失。不,不会的,他说是按照那个顺序的,但更改它以适应任何顺序并不太复杂。不把它放在输入标记中也有点不安全,但就像我说的,这是s是特定用例的最小值。
$initval = $_GET['initval'];
$endval =$_GET['endval'];
$htmlCode = "...";
$matches = array();

if (preg_match_all('/name="(initval|endval)"\s+value="([^"]+)"/', $htmlCode, $matches)) {
    $formValues = array_combine($matches[1], $matches[2]);
} else {
   // error
}