Условие: имеются html-теги img с набором классов.
1. <img src="" alt="" width="" height="" class="alignleft size-medium wp-image">
2. <img src="" alt="" width="" height="" class="wp-image alignnone size-full">
3. <img src="" alt="" width="" height="" class="size-large wp-image alignright">
Задача: регулярным выражением в PHP удалить из тегов классы, содержащие "align".
Нашел такую основу:
<img.*?class="(.*?)"[^\>]+>
Как адаптировать?
Если проверяются исключительно теги img
, то будет достаточно поиска по атрибуту class="..."
:
$str = '<img src="" alt="" width="" height="" class="alignleft size-medium wp-image">
<img src="" alt="" width="" height="" class="wp-image alignnone size-full">
<img src="" alt="" width="" height="" class="size-large wp-image alignright">';
echo preg_replace('~\s?class=".*align.*"~', '', $str);
Но если кроме img
могут быть и другие теги, тогда можно сначала отфильтровать именно по тегу img
, а потом - по атрибуту class="..."
:
$str = '<img src="" alt="" width="" height="" class="alignleft size-medium wp-image">
<img src="" alt="" width="" height="" class="wp-image alignnone size-full">
<img src="" alt="" width="" height="" class="size-large wp-image alignright">';
echo preg_replace_callback(
'~<img[^>]*>~',
function ($m) {
return preg_replace('~\s?class=".*align.*"~', '', $m[0]);
},
$str
);
UPD: Ещё можно использовать подмаски, это наиболее краткий вариант:
$str = '<img src="" alt="" width="" height="" class="alignleft size-medium wp-image">
<img src="" alt="" width="" height="" class="wp-image alignnone size-full">
<img src="" alt="" width="" height="" class="size-large wp-image alignright">';
echo preg_replace('~(<img[^>]*)\sclass=".*align.*"([^>]*>)~', '$1$2', $str);
В всех случаях результат будет таким:
<img src="" alt="" width="" height="">
<img src="" alt="" width="" height="">
<img src="" alt="" width="" height="">
UPD-2: С учётом уточнений из комментариев автора топика, публикую ещё один вариант решения:
$str = '<img src="" alt="" width="" height="" class="alignleft size-medium wp-image">
<img src="" alt="" width="" height="" class="wp-image alignnone size-full">
<img src="" alt="" width="" height="" class="size-large wp-image alignright">';
echo preg_replace_callback(
'~<img[^>]*>~',
function ($m) {
return preg_replace('~align\w+\s*|\s*align\w+~', '', $m[0]);
},
$str
);
Результат:
<img src="" alt="" width="" height="" class="size-medium wp-image">
<img src="" alt="" width="" height="" class="wp-image size-full">
<img src="" alt="" width="" height="" class="size-large wp-image">
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как перенести элемент вниз? Есть два слова "Смотреть работу" и они находятся не на одном уровне и я хочу переместить их на один уровеньКак...