PHP - split a string of HTML attributes into an indexed array

后端 未结 6 853
后悔当初
后悔当初 2020-12-11 16:20

I\'ve got a string with HTML attributes:

$attribs = \' id= \"header \" class = \"foo   bar\" style =\"background-color:#fff; color: red; \"\';
6条回答
  •  既然无缘
    2020-12-11 16:43

    A simple and effective function to solve this

    function attrString2Array($attr) {
      $atList = [];
    
      if (preg_match_all('/\s*(?:([a-z0-9-]+)\s*=\s*"([^"]*)")|(?:\s+([a-z0-9-]+)(?=\s*|>|\s+[a..z0-9]+))/i', $attr, $m)) {
        for ($i = 0; $i < count($m[0]); $i++) {
          if ($m[3][$i])
            $atList[$m[3][$i]] = null;
          else
            $atList[$m[1][$i]] = $m[2][$i];
        }
      }
    
      return $atList;
    }
    
    print_r(attrString2Array('
  • ')); print_r(attrString2Array('data-tpl-classname="class" data-tpl-title="innerHTML" disabled nowrap href="#" hide src = "images/asas.gif"')); //Array //( // [data-tpl-classname] => class // [data-tpl-title] => innerHTML // [disabled] => // [nowrap] => // [href] => # // [hide] => // [src] => images/asas.gif //)
提交回复
热议问题