Последовательность в искровом sql находится в искровом разряде 1.6, его выбирается monotonically_increasing_id () из таблицы, из-за искры 1,6 выйдет
Простая и эффективная функция для решения этого
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('<li data-tpl-classname="class" data-tpl-title="innerHTML" disabled nowrap href="#" hide src = "images/asas.gif">'));
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
//)
You could use a regular expression to extract that information:
$attribs = ' id= "header " class = "foo bar" style ="background-color:#fff; color: red; "';
$pattern = '/(\\w+)\s*=\\s*("[^"]*"|\'[^\']*\'|[^"\'\\s>]*)/';
preg_match_all($pattern, $attribs, $matches, PREG_SET_ORDER);
$attrs = array();
foreach ($matches as $match) {
if (($match[2][0] == '"' || $match[2][0] == "'") && $match[2][0] == $match[2][strlen($match[2])-1]) {
$match[2] = substr($match[2], 1, -1);
}
$name = strtolower($match[1]);
$value = html_entity_decode($match[2]);
switch ($name) {
case 'class':
$attrs[$name] = preg_split('/\s+/', trim($value));
break;
case 'style':
// parse CSS property declarations
break;
default:
$attrs[$name] = $value;
}
}
var_dump($attrs);
Now you just need to parse the classes of class
(split at whitespaces) and property declarations of style
(a little bit harder as it can contain comments and URLs with ;
in it).
Вы не можете использовать обычный выражение для анализа html-атрибутов. Это потому, что синтаксис контекстный. Вы можете использовать регулярные выражения для токенизации ввода, но вам понадобится конечный автомат для его анализа.
Если производительность не имеет большого значения, самый безопасный способ сделать это, вероятно, заключить атрибуты в тег и затем отправьте его через синтаксический анализатор HTML. Например: [
function parse_attributes($input) {
$dom = new DomDocument();
$dom->loadHtml("<foo " . $input. "/>");
$attributes = array();
foreach ($dom->documentElement->attributes as $name => $attr) {
$attributes[$name] = $node->value;
}
return $attributes;
}
] Вы, вероятно, могли бы оптимизировать вышеизложенное, повторно используя синтаксический анализатор или используя XmlReader или sax parser .
Использовать SimpleXML:
<?php
$attribs = ' id= "header " class = "foo bar" style ="background-color:#fff; color: red; "';
$x = new SimpleXMLElement("<element $attribs />");
print_r($x);
?>
Предполагается, что атрибуты всегда представляют собой пары имя / значение ...
Может быть, это вам поможет .. Что он делает ..