original_string: function _parseAttributes($attributes)
      {
          if (is_array($attributes)) {
              $ret = array();
              foreach ($attributes as $key => $value) {
                  if (is_int($key)) {
                      $key = $value = strtolower($value);
                  } else {
                      $key = strtolower($key);
                  }
                  $ret[$key] = $value;
              }
              return $ret;
  
          } elseif (is_string($attributes)) {
              $preg = "/(([A-Za-z_:]|[^\\x00-\\x7F])([A-Za-z0-9_:.-]|[^\\x00-\\x7F])*)" .
                  "([ \\n\\t\\r]+)?(=([ \\n\\t\\r]+)?(\"[^\"]*\"|'[^']*'|[^ \\n\\t\\r]*))?/";
              if (preg_match_all($preg, $attributes, $regs)) {
                  for ($counter=0; $counter<count($regs[1]); $counter++) {
                      $name  = $regs[1][$counter];
                      $check = $regs[0][$counter];
                      $value = $regs[7][$counter];
                      if (trim($name) == trim($check)) {
                          $arrAttr[strtolower(trim($name))] = strtolower(trim($name));
                      } else {
                          if (substr($value, 0, 1) == "\"" || substr($value, 0, 1) == "'") {
                              $value = substr($value, 1, -1);
                          }
                          $arrAttr[strtolower(trim($name))] = trim($value);
                      }
                  }
                  return $arrAttr;
              }
          }
      }
code: function _parseAttributes($attributes)
      {
          if (is_array($attributes)) {
              $ret = array();
              foreach ($attributes as $key => $value) {
                  if (is_int($key)) {
                      $key = $value = strtolower($value);
                  } else {
                      $key = strtolower($key);
                  }
                  $ret[$key] = $value;
              }
              return $ret;
  
          } elseif (is_string($attributes)) {
              $preg = "/(([A-Za-z_:]|[^\\x00-\\x7F])([A-Za-z0-9_:.-]|[^\\x00-\\x7F])*)" .
                  "([ \\n\\t\\r]+)?(=([ \\n\\t\\r]+)?(\"[^\"]*\"|'[^']*'|[^ \\n\\t\\r]*))?/";
              if (preg_match_all($preg, $attributes, $regs)) {
                  for ($counter=0; $counter<count($regs[1]); $counter++) {
                      $name  = $regs[1][$counter];
                      $check = $regs[0][$counter];
                      $value = $regs[7][$counter];
                      if (trim($name) == trim($check)) {
                          $arrAttr[strtolower(trim($name))] = strtolower(trim($name));
                      } else {
                          if (substr($value, 0, 1) == "\"" || substr($value, 0, 1) == "'") {
                              $value = substr($value, 1, -1);
                          }
                          $arrAttr[strtolower(trim($name))] = trim($value);
                      }
                  }
                  return $arrAttr;
              }
          }
      }
code_tokens: function _parseAttributes ( $ attributes ) { if ( is_array ( $ attributes ) ) { $ ret = array ( ) ; foreach ( $ attributes as $ key => $ value ) { if ( is_int ( $ key ) ) { $ key = $ value = strtolower ( $ value ) ; } else { $ key = strtolower ( $ key ) ; } $ ret [ $ key ] = $ value ; } return $ ret ; } elseif ( is_string ( $ attributes ) ) { $ preg = "/(([A-Za-z_:]|[^\\x00-\\x7F])([A-Za-z0-9_:.-]|[^\\x00-\\x7F])*)" . "([ \\n\\t\\r]+)?(=([ \\n\\t\\r]+)?(\"[^\"]*\"|'[^']*'|[^ \\n\\t\\r]*))?/" ; if ( preg_match_all ( $ preg , $ attributes , $ regs ) ) { for ( $ counter = 0 ; $ counter < count ( $ regs [ 1 ] ) ; $ counter ++ ) { $ name = $ regs [ 1 ] [ $ counter ] ; $ check = $ regs [ 0 ] [ $ counter ] ; $ value = $ regs [ 7 ] [ $ counter ] ; if ( trim ( $ name ) == trim ( $ check ) ) { $ arrAttr [ strtolower ( trim ( $ name ) ) ] = strtolower ( trim ( $ name ) ) ; } else { if ( substr ( $ value , 0 , 1 ) == "\"" || substr ( $ value , 0 , 1 ) == "'" ) { $ value = substr ( $ value , 1 , - 1 ) ; } $ arrAttr [ strtolower ( trim ( $ name ) ) ] = trim ( $ value ) ; } } return $ arrAttr ; } } }
docstring: Returns a valid atrributes array from either a string or array
  @param    mixed   $attributes     Either a typical HTML attribute string or an associative array
  @access   private
docstring_tokens: Returns a valid atrributes array from either a string or array