Я хочу получить HTML-теги из кода, но он дает только строку между открывающим и закрывающим HTML-тегами.
<?
$string = 'this is <em>first</em> test';
preg_match('/<.+?>/', $string, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
?>
Этот код должен дать мне <em>
первый</em>
но вместо этого я получаю только первый из массива
Заранее спасибо 🙂
Вы можете искать следующий шаблон:
<[^<>]+?>[^<>]*?<\/[^<>]+?>
Это работает только для не вложенного HTML (например, this is <em>first</em> test
), но не для вложенных. Вы должны определенно искать анализатор HTML и не делать это самостоятельно — как уже упоминалось в комментариях.
Вот работающий пример:
var text = 'this is <em>first</em> test';
var match = text.match(/<[^<>]+?>[^<>]*?<\/[^<>]+?>/g);
console.log(match);
Других решений пока нет …