0

すべてのスタイル属性をクリアする必要がありますが、テキスト揃えは必要ありません。

$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 >
4

2 に答える 2

0

text-align だけが必要な場合は、style 属性とその引用符の間のすべて (この場合は有効な CSS) を単に「取得」し、修正されたスタイルに置き換えます。

Match:         Replace:
style=".+?"    style="text-align:left"

したがって、置き換えは次のようになります。

preg_replace('style=".+?"','style="text-align:left"',$html_text);
于 2013-10-18T16:21:52.823 に答える
0

以下を使用できます。

preg_replace("'(<[^>]+?)style=(?P<encl>[\\'\"])[^\g{encl}]*(text-align:\s*(?:left|right|center))[^\g{encl}]*\g{encl}'isu", '$1style="$3"', $html_text);

タグのみをスタイル属性に置き換えますが、text-align プロパティはそのままにします。これは、style="" と style='' のように記述された両方の属性を置き換えます

于 2013-10-18T19:46:06.813 に答える