【问题标题】:Reading attribute values from HTML从 HTML 中读取属性值
【发布时间】:2010-12-05 14:06:37
【问题描述】:

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

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

【问题讨论】:

  • @Jere:你不能这么说。这取决于 HTML 代码以及您尝试用它做什么。
  • @Jere:这不是专业提示,这通常是错误的,这是一个缺乏理解的提示。
  • 表格总是这样,还是可以千变万化、无效等?
  • @Gumbo 今天已经有了这个论点,希望人们能够了解解析和次要文本匹配/更改之间的区别:stackoverflow.com/questions/4358677/…

标签: php html-parsing


【解决方案1】:

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

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

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

这假定namevalue 属性之间只有空格,如果它不同,您需要进行一些小的更改。 preg_match_all() 返回一个数组,整个正则表达式匹配在[0],然后各个组在其对应位置匹配[1][2],数组组合将一个作为键,一个作为值并将它们放在一起您可以通过关联查找来获取结果。

【讨论】:

  • 不,它不会,他说它是按照那个顺序,但是改变它以适应任何顺序并不是太复杂。不把它放在输入标签中也有点不安全,但就像我说的那样,这是特定用例的最低要求。
【解决方案2】:

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

<form id="compute" action="somefile.php" method="GET">
  <input type="hidden" name="initval" value="tal:00far" />
  <input type="hidden" name="endval" value="utl:80er" />
  <input type="submit" value="Click!">
</form>

点击提交后,数据被发送到 php 脚本中,在这里可以读取为

$initval = $_GET['initval'];
$endval =$_GET['endval'];

编辑:看来我的问题搞错了,抱歉。 :-(

【讨论】:

  • 该表单不是正在提交的表单。它只是存储在字符串中的标记,所以我的意思是通过字符串操作获取值。
  • 如果您想这样做,您可以随时删除您的答案,以免让未来的读者感到困惑。所有这些 cmets 也将随之消失。
【解决方案3】:

尝试使用 htmldomlibraries 来解析 html。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 2015-11-10
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多