Regexp для получения Html Tag Node

234
28 ноября 2017, 23:24

Например из строки <span class="example"> получить просто span (любой тег Html)

Answer 1

Зачем с html работать регулярками, если есть DOMDocument

Answer 2

Если требуется найти теги, при этом избежать повторов, то можно написать регулярное выражение, а полученный массив обработать функцией для удаления повторов. Выглядеть будет так:

$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);
READ ALSO
Не могу сделать удаление с помощью checkbox`ов и RedBean

Не могу сделать удаление с помощью checkbox`ов и RedBean

Мой код на данный момент выглядит так, мне кажется я близок к решению своей проблемы, но столкнулся с проблемой, как получить имена именно...

183
Как использовать $ref в examples Swagger?

Как использовать $ref в examples Swagger?

У меня вот генерируется такой JSON:

217
php форма связи

php форма связи

происходит отправка формыесли все ок то

206
yii2 адрес сайта с www

yii2 адрес сайта с www

Вроде бы всё настроил, но globalcss и global

212