0

これらの置換を1つの正規表現に組み合わせるにはどうすればよいですか?

$style = $node->getAttribute("style");
$style = mb_ereg_replace("(direction:[[:space:]]*(rtl|ltr);)", "", $style) . " direction: {$direction};";  // remove existing direction-attribute and add the new one
$style = mb_ereg_replace("(^[[:space:]]*)|([[:space:]]*$)", "", $style); // trim spaces at the end and beginning
$style = mb_ereg_replace("([[:space:]]){2,}", " ", $style); // limit spaces to one at a time
$node->setAttribute("style", $style);

式は期待どおりに機能しますが、3つ未満の置換ステートメントにそれらを組み合わせたいと思います。
既存の方向属性があるかどうかわからないので、単に置き換えることはできません。


最初の2つの置換に追加された代替を編集します。

$style = mb_ereg_replace("(direction:[[:space:]]*(rtl|ltr);)|(^[[:space:]]*)|([[:space:]]*$)", "", $style) . " direction: {$direction};";  // remove existing direction-attribute and trim spaces at the end and beginning and add the new one
$style = mb_ereg_replace("([[:space:]]){2,}", " ", $style); // limit spaces to one at a time
4

1 に答える 1

1

これが私が行う方法です。trim()が2番目の正規表現を置き換えます(改行を保持したい場合を除きます)

私はpreg_replaceでそれを行いました。これは、ereg_functionsの代わりに使用する必要があります(少し異なりますが、複雑なことはありません)

$style = trim(preg_replace('~direction:(\\s*?)(rtl|ltr);~','',$style) . " direction: {$direction};");
$style = preg_replace('~(\\s*?){2,}~',' ',$style);
于 2012-04-13T10:57:32.157 に答える