PHP中将HTML的FORM代码转换为JSON数组
本文最后更新于 179 天前,其中的信息可能已经有所发展或是发生改变。

最近遇到这样的需求,爬虫爬某些网页,返回html的form代码并自动提交,而且form的action、数据的name value都是不固定的,因此需要解析HTML代码,并将其转换成一种通用的格式。

输入:

<form action="/api/xxx" method="POST">
  <input type="hidden" name="aaa" value="bbb"/>
  <input type="hidden" name="ccc" value="ddd"/>
</form>

输出:

{

    "action": "/api/xxx",

    "method": "POST",

    "data": {

        "aaa": "bbb",

        "ccc": "ddd"

    }

}

使用ChatGPT辅助后,我们很快得到了以下代码。(经过本人修改后)

function form2json($html) {
    $doc = new DOMDocument();
    $doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES','UTF-8'));
    // $doc->loadHTML($html);
    $forms = $doc->getElementsByTagName('form');
    if($forms->length > 0) {
        $form = $forms->item(0);
        $formInfo = [
            'action' => $form->getAttribute('action'),
            'method' => $form->getAttribute('method'),
            'data' => []
        ];
        $inputs = $form->getElementsByTagName('input');
        foreach($inputs as $input) if($input->getAttribute('name')) $formInfo['data'][$input->getAttribute('name')] = $input->getAttribute('value');
        return $formInfo;
    }
    return false;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇