我必須清除所有的樣式屬性,但不是的text-align:正則表達式爲清除所有樣式除了文本對齊
$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>
UPDATE
我找到了soluton。不那麼優雅,但工程:
$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 >
這兩個屬性如果在原始樣式中沒有'text-align:left'會怎麼樣?從我在這種情況下看到的OP也想刪除'style'屬性。 – Pshemo
是的。所有的作品都很好,如果風格包含文本對齊,但如果不是 - 沒有運氣。 – clarent