Javascript GetElementById替代方案

Javascript GetElementById替代方案,javascript,php,html,dom,curl,Javascript,Php,Html,Dom,Curl,我试图用curl编写一个简单的脚本,但问题是我需要收集每个新POST请求生成的特殊密钥(onLoad())。通过创建一个新的DOM元素并使用GetElementById函数从DOM中获取值,可以很容易地解决这个问题,但在这种情况下,在我想要返回值的特定标记中没有声明“id”。只有一个名字 例如: <input name="trans_id" value="Lk+Vz957skV845b7x2DX7iyR1FI=" type="hidden"> 下面是我今天做的一个伪代码(最后一

我试图用curl编写一个简单的脚本,但问题是我需要收集每个新POST请求生成的特殊密钥(
onLoad()
)。通过创建一个新的DOM元素并使用GetElementById函数从DOM中获取值,可以很容易地解决这个问题,但在这种情况下,在我想要返回值的特定标记中没有声明“id”。只有一个名字

例如:

<input name="trans_id" value="Lk+Vz957skV845b7x2DX7iyR1FI=" type="hidden">

下面是我今天做的一个伪代码(最后一段是我需要帮助的地方):



您可以使用
DOMXPath
通过xpath访问特定属性

$domx = new DOMXPath($doc);
$trans_id = $domx->evaluate("//input[contains(@name, 'trans_id')]");
如有必要,最终循环对象

foreach ($trans_id as $id) {
    echo "Value:" . $id->nodeValue;
}

仔细想想,您需要
属性,因此需要使用
getAttribute()
来检索它。我刚刚使用以下代码进行了测试,结果与预期一致:

<?php
$result = '<input name="trans_id" value="Lk+Vz957skV845b7x2DX7iyR1FI=" type="hidden">';
$doc = new DOMDocument();
@$doc->loadHTML($result);
$domx = new DOMXPath($doc);
$trans_id = $domx->query('//input[@name="trans_id"]');
foreach ($trans_id as $id) {
    echo "Value: " .  $id->getAttribute('value');
}

感谢您的帮助@Royal Bg。不幸的是,您的代码似乎无法正常工作。我试图提取函数触发的第一个值($trans_id->item(0)->nodeValue;),但似乎也不起作用。请您检查一下求值表达式,它可能是错误的。我还尝试使用foreach循环,但它没有解决问题。@HalisDuraki我编辑了我的答案,这应该可以像预期的那样工作:)现在工作正常了。此外,我不需要foreach循环,所以我删除了它(只有一个名为“trans_id”的标记),并将其替换为
项(0)
。答案被接受。
<?php
$result = '<input name="trans_id" value="Lk+Vz957skV845b7x2DX7iyR1FI=" type="hidden">';
$doc = new DOMDocument();
@$doc->loadHTML($result);
$domx = new DOMXPath($doc);
$trans_id = $domx->query('//input[@name="trans_id"]');
foreach ($trans_id as $id) {
    echo "Value: " .  $id->getAttribute('value');
}
Value: Lk+Vz957skV845b7x2DX7iyR1FI=