regex — теги HTML для меня не совпадают при использовании регулярных выражений при переполнении стека

Я хочу получить HTML-теги из кода, но он дает только строку между открывающим и закрывающим HTML-тегами.

<?
$string = 'this is <em>first</em> test';

preg_match('/<.+?>/', $string, $matches);

echo '<pre>';
print_r($matches);
echo '</pre>';
?>

Этот код должен дать мне <em>первый</em> но вместо этого я получаю только первый из массива

Заранее спасибо 🙂

0

Решение

Вы можете искать следующий шаблон:

<[^<>]+?>[^<>]*?<\/[^<>]+?>

Это работает только для не вложенного HTML (например, this is <em>first</em> test), но не для вложенных. Вы должны определенно искать анализатор HTML и не делать это самостоятельно — как уже упоминалось в комментариях.

Вот работающий пример:

var text = 'this is <em>first</em> test';
var match = text.match(/<[^<>]+?>[^<>]*?<\/[^<>]+?>/g);
console.log(match);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector