Javascript GetElementById替代方案
我试图用curl编写一个简单的脚本,但问题是我需要收集每个新POST请求生成的特殊密钥(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"> 下面是我今天做的一个伪代码(最后一
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=