我有以下正则表达式:
preg_replace('#<(/?(?:pre|p|b|em|u|ul|li|ol|blockquote|h1|h2|h3|h4|h5|strong|br))>#', '<\1>', $this->body);
它可以替换没有样式属性的标记,如:
<p>, <b>, <li>
但是我试图让它与样式属性匹配标签,例如:
<p style="margin-left: 20px"> and <p style="text-align: right;">.
我该怎么做?
感谢您的帮助!
答案 0 :(得分:0)
试试这个:
<(/?(?:pre|p|b|em|u|ul|li|ol|blockquote|h1|h2|h3|h4|h5|strong|br))(?: +[a-z]+="[^"]*")*>
最后一部分:
(?: +[a-z]+="[^"]*")*
匹配attributes =“xxxxx”
答案 1 :(得分:0)
表单评论:我只需要样式属性 - 仅适用于
<p>
- 标签!
从索引1获取匹配的组。
<p.*(style="[^"]*")[^>]*>
表单注释:应省略除style属性之外的所有其他属性!
尝试以下示例代码,仅使用样式属性替换p
标记。
示例代码:
$re = "/<p.*(style=\\"[^\\"]*\\")[^>]*>/m";
$str = "<p style=\"margin-left: 20px\" align=\"left\">\n<p align=\"left\">\n<p align=\"left\" style=\"margin-left: 20px\">\n";
$subst = '<p $1>';
$result = preg_replace($re, $subst, $str);
上查找详细说明