Не могу получить массив из строки, если перед скобками есть символы
"string1", "string2"
$string = "
iojefu { string1 }
asdjhu { string2 }
";
$array = preg_split('/\{|\}(.*)?/', $string, null, PREG_SPLIT_NO_EMPTY);
Ищем регуляркой строки внутри фигурных скобок, игнорируя опциональные пробелы вокруг строки:
$string = "
iojefu { string1 }
asdjhu { string2 }
";
preg_match_all('/\{\s*(?P<str>[^}]+?)\s*\}/', $string, $matches);
var_dump($matches['str']);
/*
array(2) {
[0] => string(7) "string1"
[1] => string(7) "string2"
}
*/
Конструкция (?P<name>pattern)
(с 5.2.2 допустимы два новых варианта: (?<name>pattern)
и (?'name'pattern)
) даёт имя маски и результат будет доступен по одноимённому ключу массива выходных данных; за деталями можно сходить сюда http://php.net/manual/ru/regexp.reference.subpatterns.php
Сам шаблон поиска [^}]+?
выбирает между скобками всё, что не является закрывающей фигурной скобкой. Для игнорирования конечного пробела использован ленивый квантификатор +?
, но его можно заменить на жадный +
, если добавить пробельные символы в список исключаемых в поиске - [^}\s]+
.
Если не учитывать случаи вложенных скобок {{}}
, то будет работать это:
$matches = [];
preg_match_all('/\{\s*([^}\s]*)\s*\}/', $string, $matches);
Результат будет в $matches[1]
Вы забыли про квантификаторы. Выражение \{|\}
ищет ровно один символ, а вам нужно как минимум 3: {
, }
и то что между ними (без пробелов), а оно насколько я понял может содержать все кроме фигурных скобок. Так что вам нужно что-то вроде этого:
/[{]\s*([^{}]+)\s*[}]/
preg_match
ищет совпадения по шаблону, а на выходе получается многомерный массив, что было лишним в моём случае
preg_split
же исключает лишнее, в результате получается чистый одномерный массив
Добавил в выражение исключение пробелов и табуляции \s
и исключение до скобок .*?
$array = preg_split('/.*?\{|\}|\s/', $string, null, PREG_SPLIT_NO_EMPTY);
array(2) {
[0]=> string(7) "string1"
[1]=> string(7) "string2"
}
Подскажите, как сделать так чтобы при загрузке аватарки (изображения) меньше 200x200 выбивало ошибку?
У меня появился вопрос, как сделать так, чтобы на странице категории подгружались подзаголовки, под которыми уже отображались конечные статьи?
Необходимо реализовать доступ к стороннему проекту через систему пользователей WordPressПример: пользователь вводит данные от своего аккаунта...