2
$output = preg_replace("|(/D)(/s+)(/d+)(;)|", "//1,//3;", $output);

すべての英字、1つ以上の空白文字(タブおよび/またはスペース)、1つ以上の数字、セミコロン、英字、コンマ、数字、そしてセミコロン。

例を示します。

始める:

hello world      1007;

終わり:

hello world,1007;
4

3 に答える 3

6

開始と終了の2つ|はおそらく正しくなく、両方ともスラッシュである必要があります。

他のすべてのスラッシュは円記号である必要があります(エスケープする必要があります)。

また、PHP 4.04$nは、キャプチャグループを参照するための推奨される方法です。

$output = preg_replace("/(\\D)\\s+(\\d+;)/", "$1,$2", $output);

一重引用符を使用する場合は、円記号をエスケープする必要はありません。

$output = preg_replace('/(\D)\s+(\d+;)/', '$1,$2', $output);
于 2008-09-10T13:10:19.797 に答える
3

それらのスラッシュはバックスラッシュである必要がありますか?ダブルクォートをシングルクォートに変更しない限り、PHPでもそれらをエスケープする必要があります。

于 2008-09-10T13:09:26.647 に答える
1

フォワードスラッシュではなく、正規表現にバックスラッシュが必要です。開始パイプと終了パイプ必要です(または正規表現の別の区切り文字)

$x = "hello world      1007;";    
echo preg_replace('|(\D)(\s+)(\d+)(;)|','$1,$3',$x);
echo preg_replace('/(\D)(\s+)(\d+)(;)/','$1,$3',$x);
echo preg_replace('{(\D)(\s+)(\d+)(;)}','$1,$3',$x);
于 2008-09-10T13:22:12.843 に答える