Как мне вытащить слово name без скобок, так получается вместе со скобками
$str = '/category/[name]/';
preg_match_all('~\\[[a-z]+\\]~', $str, $matches);
var_dump($matches);
а так получается два варианта [name] и name
$str = '/category/[name]/';
preg_match_all('~\\[([a-z]+)\\]~', $str, $matches);
var_dump($matches);
preg_match('~\[([^]]+)\]~', $str, $matches);var_dump($matches[0]);
# kantry (25.08.2022 / 23:59)
preg_match('~\[([^]]+)\]~', $str, $matches);var_dump($matches[0]);
Это так же дает массив
array (size=2)
0 => string '[name]' (length=6)
1 => string 'name' (length=4)
galtsev.t, Разве из масива трудно строку выудить?
$matches[0] // vs $matches[1]
galtsev.t, тебе нужно добиться только одного элемента в массиве?
$str = '/category/[name]/';
preg_match('~\[\K[^]]+~', $str, $matches);
var_dump($matches);
/*
array (size=1)
0 => string 'name' (length=4)
*/
# Строитель (28.08.2022 / 00:59)
galtsev.t, тебе нужно добиться только одного элемента в массиве?
$str = '/category/[name]/';
preg_match('~\[\K[^]]+~', $str, $matches);
var_dump($matches);
/*
array (size=1)
0 => string
Нее, у меня там много будет [name] [category] , но я уже документацию прочитал, понял что в preg_match_all два массива потому что первый содержит полные вхождения, второй массив вхождений первой подмаски. Правда я не особо понял что это значит)
# galtsev.t (28.08.2022 / 10:31)
Нее, у меня там много будет [name] [category] , но я уже документацию прочитал, понял что в preg_match_all два массива потому что первый содержит полные вхождения, второй массив вхождений первой подма
В регулярных выражениях подмаской называют соответствия с шаблоном, который прописан внутри круглых скобок. preg_match() вернёт два элемента массива, если задействовать в регулярном выражении одну подмаску:
$str = '/category/[name]/';
preg_match('~/[^/]+/\[([^]]+)]/~', $str, $matches);
var_dump($matches);
/*
array (size=2)
0 => string '/category/[name]/'
1 => string 'name'
*/
Если задействовать две подмаски, то preg_match() вернёт в массив соответствий три элемента:
$str = '/category/[name]/';
preg_match('~/([^/]+)/\[([^]]+)]/~', $str, $matches);
var_dump($matches);
/*
array (size=3)
0 => string '/category/[name]/' (length=17)
1 => string 'category' (length=8)
2 => string 'name'
*/
И так далее.
Кто подскажет
preg_match('/\\d{1,3}?[-.\\s]?\\d{1,3}?[-.\\s]?\\d{3,4}/', $text, $price);
Находит
15 000 000
4 000 000
4.000.000
10 400
Но не находит 4 цифры подряд
0000
2222
galtsev.t, Ты бы хоть строку в которой ищешь как пример привел
galtsev.t, я принципиально не подскажу.