0

次の形式の文字列があります。

ABC 318 XY2388

また

ABC 318 XY02388

「ABC 318/XY 2388」になってほしい。したがって、文字の 2 番目のバッチの後に先行ゼロがある場合は、それらを削除します。

次のコードを使用して、出力を次のように取得できました

ABC 318/XY 2388

ABC 318/XY 02388 (違う!)

$input = "ABC 318 XY2388";
$output = preg_replace("/([A-Z]*) (\d*) ([A-Z]*)(\d*)/","$1 $2/$3 $4", $input);
echo $output;

そこから 0(ゼロ) を切り取る方法を誰か提案してもらえますか?

したがって、次を渡すと:

ABC 318 XY2388

また

ABC 318 XY02388

最終出力は ABC 318/XY 2388である必要があります

4

2 に答える 2

0

簡単な提案を追加するだけです。必要なのは、中間の 0 を 1 つ以上削除することである場合は、次のようにすることができます。

$input = "ABC 318 XY0002388";
$output = preg_replace("/([A-Z]+) ([0-9]+) ([A-Z]+)(0*)([0-9]+)/", "$1 $2/$3 $5", $input);
var_dump($output); //should be "ABC 318/XY 2388"

$4 の「中間の 0」を保存していますが、$4 は出力の一部ではないことに注意してください。

私はそれをテストしていませんが、動作するはずです。「(0*)」を括弧で囲まないと、0 を保存せずに「$1 $2/$3 $4」で動作する可能性があります。

これが役立つことを願っています。

于 2013-07-11T05:07:46.603 に答える