У меня есть такой код:
$body = '<p>awesometext:data</p>';
preg_match_all("/<p>([^<]+)</p>/", $body, $matches);
$string = array_map('trim', $matches[1]);
В результате я получаю пустой массив $string. Как я могу это исправить?
Нить может быть и побольше. Пример:
$body = '<p>awesometext:data</p><p>othertext:data</p><p>sss:sddd</p>'; //e.t.c
В ваших примерах нет начальных / конечных пробелов. Что ты хочешь? У вас есть другие примеры?
У меня тоже отлично работает @RobbieAverill, а также с более длинной строкой






Если я вас правильно понял, чтобы получить строки внутри тега p, вы можете:
let str = '<p>awesometext:data</p><p>othertext:data</p><p>sss:sddd</p>';
let matches = str.replace(/<p>|</p>/gi, ' ').trim().match(/([a-z]+?:[a-z]+)/gi);
matches вернет массив строк. Обратите внимание, что приведенное выше выражение не подходит для крайних случаев. т.е. ведущие / следовые пробелы и т. д.
Мне нужен PHP, но не javascript
Похоже, у меня это работает: eval.in/1073233