Задать вопрос
pandaa
@pandaa

Регулярные выражения, почему не работает (.*) — ноль или более символов?

Хочу удалить атрибуты у тегов, оставив при этом сами теги и их содержимое.

$str = '
<p>без атрибутов</p>
<p align="justify">с атрибутами</p>';

$res = preg_replace('/((?<=<p)(.*)(?=>))/msU', "", $str);
echo $res; /


В итоге удаляется тег с текстом без атрибутов, как это можно исправить?

В регулярных выражениях не спец, думаю задача езе простая для тех кто шарит, заранее спасибо
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@IS-Builder
~ PHP-8 & REGEXP - This is a really powerful kit ~
pandaa
$str = '<p>без атрибутов</p>
<p align="justify">с атрибутами</p>';

$res = preg_replace('~<\pL+\d?\K.*?(?=>)~', '', $str);

echo $res;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Может проще использовать, например https://github.com/paquettg/php-html-parser/ и метод removeAttribute?

А так попробуйте
preg_replace('/(<p)[^>]+?(>.*)/g', "$1$2", $str);
Ответ написан
@user49981
$str = '
<p>без атрибутов</p>
<p align="justify" style="color:red;" class="c1">с атрибутами</p>';

$res = preg_replace('/<p ([^>]{0,}[\s]{0,})>/msU', "<p>", $str);
echo $res;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽