Этот код работает успешно. $ array [1] возвращает имя столбца.Php несколько разных regexp
//My String
$string = '<input value="{#Quantity#}" type="number" />';
preg_match_all('/{#(.*)#\}/i', $text, $array);
print_r($array);
/*
Returned :
Array
(
[0] => Array
(
[0] => {#Quantity#}
)
[1] => Array
(
[0] => Quantity
)
)
*/
Но если в тексте больше названия столбца. Это не работает:
$string = '<input value="{#Quantity#}" data-id="{#Id#}" type="number" />';
preg_match_all('/{#(.*)#\}/i', $text, $array);
print_r($array);
/*
Returned :
Array
(
[0] => Array
(
[0] => {#Quantity#}" data-id="{#Id#}
)
[1] => Array
(
[0] => Quantity#}" data-id="{#Id
)
)
*/
Я хочу этот массив
Array
(
[0] => Array
(
[0] => {#Quantity#}" data-id="{#Id#}
)
[1] => Array
(
[0] => Quantity
[1] => Id
)
)
Как должно быть регулярное выражение? Итак, как я могу исправить эту проблему?
Это хороший ответ, но не является ли «я» -регулярным избыточным в этом выражении? –
https://translate.google.com/#tr/en/eyvallah%20karde%C5%9Fim :) –
В этом простом случае это делает незначительную разницу. Но использование ленивого соответствия - это удар производительности. Смотрите: http://www.regular-expressions.info/repeat.html#lazy для объяснения причин, почему – Luke