すべてのスタイル属性をクリアする必要がありますが、テキスト揃えは必要ありません。
$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;">
任意の 1 つの正規表現が必要
なりたい
<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 >