Например из строки <span class="example">
получить просто span (любой тег Html)
Зачем с html работать регулярками, если есть DOMDocument
Если требуется найти теги, при этом избежать повторов, то можно написать регулярное выражение, а полученный массив обработать функцией для удаления повторов. Выглядеть будет так:
$str = '<div style="position: relative; width: 200px; height: 100px">
<div style="position: absolute; top: 0; left: 0; width: 200px">
<img width="180" height="50" src="http://www.google.com.ua/intl/en_com/images/srpr/logo1w.png" />
</div>
<div style="position: absolute; top: 8%; left: 20%; width: 250px; text-decoration-style: dotted; color: #9d0000">
Текст из файла
</div>
</div>
Текст
<span class="example">';
var_dump(get_tags($str));
function get_tags($str) {
preg_match_all('~<(?<tags>[a-z]+)[^>]*>~', $str, $a);
return (isset($a) ? array_unique($a['tags']) : $str);
}
Результат:
array (size=3)
0 => div
2 => img
4 => span
Так же можно построить шаблон с помощью ретроспективной и опережающей позитивных проверок - таким образом в результирующем массиве будет меньше "лишних" соответствий. Например:
preg_match_all('~(?<=<)[a-z]+(?=[^>]*\s*/?>)~', $str, $arr);
print_r($arr);
Результат:
Array
(
[0] => Array
(
[0] => div
[1] => div
[2] => img
[3] => div
[4] => span
)
)
UPD: Ну или так:
preg_match('~(?<=<)[a-z]+(?=[^>]*\s*/?>)~', $str, $arr);
print_r($arr);
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Мой код на данный момент выглядит так, мне кажется я близок к решению своей проблемы, но столкнулся с проблемой, как получить имена именно...