В тексте есть следующая группа символов:
:arrow_lower_left:arrow_upper_left:black_small_square:
или :arrow_lower_left:
Нужно как-то достать каждое слово без двоеточий через карманы. Пробовал следующее регулярное выражение:
:(?:([a-z_]+):)+
Но в результате сохраняется только последнее слово. Что я делаю не так?
$str = ':arrow_lower_left:arrow_upper_left:black_small_square: ';
preg_match_all(
'/(?<=:) # проверка на наличие двоеточия перед захватывающей скобкой
([a-z_]+) # захват "слова" (можно даже убрать скобки)
(?=:) # проверка на наличие двоеточия после захватывающей скобки
/x',
$str,
$found
);
var_dump($found);
См. также
Всё по существу и ничего лишнего:
$str = ':arrow_lower_left:arrow_upper_left:black_small_square:';
preg_match_all('~:\K[^:]+~', $str, $arr);
var_dump($arr[0]);
Результат:
array (size=3)
0 => string 'arrow_lower_left' (length=16)
1 => string 'arrow_upper_left' (length=16)
2 => string 'black_small_square' (length=18)
Демо PHP
Демо REGEXP
OwnerName - это колонка с фамилиями VarcharПри заполнении массива всегда останавливается на самой длинной фамилии (опытным путем вычислил, что более...
Есть функция, которая, используя библиотеку phpQuery, парсит данные со страницы на сайтеДанные на странице обновляются регулярно, поэтому функция...
Никак не могу разобраться в проблеме отправки формы: нажимаю Save и не отправляется
Доброе время суток! Требуется помощь, есть данные которые приходят из формы, пример данных: