我必须清除所有样式属性但不是文本对齐:
$html_text='<td style=" width:297pt ; text-align:left; border-top:solid windowtext 0.5pt;border-right:solid windowtext 0.5pt;border-bottom:solid windowtext 0.5pt;border-left:solid windowtext 0.5pt;border-top:solid windowtext 0.5pt;border-right:solid windowtext 0.5pt;border-bottom:solid windowtext 0.5pt;border-left:solid windowtext 0.5pt;"><p style="direction:ltr;unicode-bidi:normal;text-autospace:none;">';
$html_text =
preg_replace('/style=\"[^\"]*(text-align:[^;]+)+[^\"]*\"/', "style=\"$1\"",$html_text);
echo $html_text;
结果:
<td style="text-align:left"><p style="direction:ltr;unicode-bidi:normal;text-autospace:none;">
需要任何一个正则表达式
我想成为
<td style="text-align:left"><p>
更新
我找到了解决方案。不那么优雅但有效:
$html_text='<td style=" width:297pt ; text-align:left; border-top:solid windowtext 0.5pt;border-right:solid windowtext 0.5pt;border-bottom:solid windowtext 0.5pt;border-left:solid windowtext 0.5pt;border-top:solid windowtext 0.5pt;border-right:solid windowtext 0.5pt;border-bottom:solid windowtext 0.5pt;border-left:solid windowtext 0.5pt;"><p style="direction:ltr;unicode-bidi:normal;text-autospace:none;">';
$html_text =
preg_replace('/style=\"[^\"]*(text-align:[^;]+)[^\"]*\"/', "styyy=\"$1\"",$html_text);
$html_text =preg_replace('/style=\"[^\"]*\"/', "",$html_text);
$html_text =str_replace('styyy', "style",$html_text);
echo $html_text;
结果符合预期:
<td style="text-align:left"><p >