【问题标题】:Get the value of a html input element as a php string获取 html 输入元素的值作为 php 字符串
【发布时间】:2012-11-15 11:32:30
【问题描述】:

我有一个在 php 中作为字符串加载的 html 文件,我需要获取 HTML 字符串中输入元素的值。有人可以帮我构建一个函数,该函数采用输入元素的名称并返回其值吗?

这是我想做的功能的一个例子:

function getVal($name){

    $htmlStr = "<form action = \"action.php\"><input type=\"hidden\" name=\"command\" value=\"123456\">
                <input type=\"hidden\" name=\"quantity\" value=\"1\">
                <input type=\"hidden\" name=\"user_mode\" value=\"1\">
                <input type=\"hidden\" name=\"stock\" value=\"-1255303070\">
                <input type=\"hidden\" name=\"id\" value="429762082">
                <input type=\"hidden\" name=\"pidm\" value=\"2\"></form>";

            // I'd like to get the value of $name here probably using preg_match     

            return $value; //returns 123456

        }

$val = getVal("命令"); //val 应该是 123456。

任何 idas?谢谢

【问题讨论】:

  • 如果您只是将表单发布到脚本中会更容易。
  • 使用DOMDocument解析HTML字符串,使用DOMXPath查询你想要的值。 SO中有无数的例子(对于HTML和XML,大部分时间都是一样的)。
  • 相反,使用ajax在javascript中运行一个php文件并传递你想要的输入字段的值。
  • 你到底想做什么?就像@PatrickJamesMcDougle 所说,如果您将表单发布到您的页面,您可以访问发布变量并随心所欲地操作它们。

标签: php regex html-parsing


【解决方案1】:

这是一个使用 DOM 的示例:

$html = "<form action = \"action.php\">
  <input type=\"hidden\" name=\"command\" value=\"123456\">
  <input type=\"hidden\" name=\"quantity\" value=\"1\">
  <input type=\"hidden\" name=\"user_mode\" value=\"1\">
  <input type=\"hidden\" name=\"stock\" value=\"-1255303070\">
  <input type=\"hidden\" name=\"id\" value=\"429762082\">
  <input type=\"hidden\" name=\"pidm\" value=\"2\">
</form>";

$document = new DOMDocument();
$document->loadHTML($html);

$inputs = $document->getElementsByTagName("input");

foreach ($inputs as $input) {
  if ($input->getAttribute("name") == "id") {
    $value = $input->getAttribute("value");
  }
}

echo $value;

【讨论】:

    【解决方案2】:

    DOMDocument 中加载 HTML,然后一个简单的 XPath 查询就可以解决问题:

    $xpath = new DOMXPath($domDocument);
    $items = $xpath->query('//*[@name="command"]/@value');
    if ($items->length)
        $value = $items->item(0)->value;
    

    【讨论】:

    • $value = $xpath-&gt;evaluate('string(...)') 如果你不太关心“没有这样的元素”和“空值”之间的区别,会更方便。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多