2017-12-13 4 views
0

私は次のコードをデバッグしています:置くスペース

入力:FOO || BAR BAR

<?php 
echo preg_replace('/([^|]*) |/', '$1', 'FOO || BAR BAR') ?> 
?> 

出力:FOO|| BarBar

を私が入力するものであるため、ちょうどにpreg_replace表現を削除したいです私はとにかく欲しい。しかし、私はそれが理由のために(他の開発者によって)コード化されていると仮定します。

RegExpが何をしているのか説明できるので、その理由を推測できますか?

+3

1:入力と出力によって、質問のタイトルが間違っています。 2:この後のコードは、なぜそれが完了したかを理解するのに役立つはずです - それはスペースやその他の文字列を爆発させます。正規表現の後の変数で何が行われているか確認してください。 – FirstOne

+1

正規表現は、パイプの直後にない文字列からすべてのスペースを削除します。とにかく、正規表現のマスクの最後にあるパイプ(正規表現や文字)は意味をなさない。 –

+0

古い開発者は自分自身を言うことができません。 – revo

答えて

0

あなたの質問は多少不明です。

正規表現が実際に探しているものを理解したい場合は、オンラインの正規表現ツールをご利用ください。 Online regex tester(既にサンプルコードがあらかじめ入力されています)。

コードスニペットの「理由」を理解したい場合は、FirstOneがコメントで示唆したように、後でコードを調べる必要があります。

私が見るところでは、正規表現に誤りがあると思います。元の意図は、パイプ文字の前の空白文字を削除することでした。ただし、パイプ文字は正規表現(論理OR)の特殊文字なので、エスケープする必要があります。

<?php 
echo preg_replace('/([^|]*) \|/', '$1', 'FOO || BAR BAR') ?> 
?> 
関連する問題