Условие: имеются 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">
Сборка персонального компьютера от Artline: умный выбор для современных пользователей