php preg_replace从输入中替换数组名称

时间:2015-09-17 14:27:06

标签: php regex preg-replace domdocument

你好,如标题所述:
我有这样的输入为<input type="hidden" name="test[]" />我想要做的是从name属性中删除[],这样看起来像这样<input type="hidden" name="test" />
我想使用正则表达式或domdocument使用它。谢谢您的帮助。
ps:我有很多输入,所以他们将是随机名称属性,不仅测试 我正在使用foreach()代码来获取网站上的所有帖子,因此在name属性中使用数组的输入不会被提交,这就是原因。

1 个答案:

答案 0 :(得分:1)

以下是实现目标的方法:

$html = "<<YOUR_HTML_STRING>>"
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
// Or use $dom->loadHTMLFile($url)

$xpath = new DOMXPath($dom);
$inputs = $xpath->query('//input[@name]'); // Get all <input> tags with name attributes

foreach($inputs as $input) { 
    $name = $input->getAttribute('name'); // Get the name attribute value
    if (substr($name, -2) === "[]") {     // If it ends with [], replace
        $newval = substr($name, 0, $input->getAttribute('name')->length - 2);
        $input->setAttribute('name', $newval);  // Set the new value
    }
}

echo $dom->saveHTML();

请参阅IDEONE demo