@starblust
.

Найти все вхождения для регулярного выражения /(.*)/?

Например дана строка
$string = "<math>var:a[actions]</math> килограмм яблок стоит <math>anything[]</math> руб. Сколько будет будет стоить <math>anything</math> килограмм(а, ов) яблок?";

найти и вернуть все подшаблоны <math>.*</math>. Внутри этих тегов может быть что угодно
  • Вопрос задан
  • 155 просмотров
Решения вопроса 2
bitniks
@bitniks
Go/PHP/Symfony developer
$string = "<math>var:a[actions]</math> килограмм яблок стоит <math>anything[]</math> руб. Сколько будет будет стоить <math>anything</math> килограмм(а, ов) яблок?";

preg_match_all('#<math>(.*?)</math>#', $string, $matches);
var_dump($matches);

sandbox.onlinephpfunctions.com/code/ab2a34b6543f14...
Ответ написан
@hell
Попробуйте без регулярок - возможно будет проще.
$string = "<math>var:a[actions]</math> килограмм яблок стоит <math>anything[]</math> руб. Сколько будет будет стоить <math>anything</math> килограмм(а, ов) яблок?";
$res=array();
$maths=explode('</math>',$string);
foreach ($maths as $math){
$mis=explode ('<math>',$math);
if(isset($mis[1]))$res[]=$mis[1];
}

Работать на коротких строках будет чуть медленнее, но оверхед врядли будет очень велик
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы