0

私は使用に関しては本当に混乱してpreg_replaceいますが、ゆっくりと学んでいます。

関数のヘルプが必要です:

$str= preg_replace('#\W\d+#', '\W \d+', $str);

アイデアは、スペースのない文字が直前にある数字を探しているということです。

すなわちabc123。(「abc 123」および「123abc」ではありません)

abc123 が abc 123 または abc@@123 になるように、間にスペースまたは文字を挿入する方法を教えてください。

みんな、ありがとう!

4

3 に答える 3

3

あなたがしたい

$str= preg_replace('#([A-Za-z]+)(\d+)#', '$1 $2', $str);

\Wあなたが思っていることをしません。\wは「単語文字」を\W意味し、「単語文字ではない」を意味します。ただし、具体的にはlettersが必要なため、どちらも必要なもの[A-Za-z]ではなく、すべての文字に一致する文字クラスである が必要です。+「1 つ以上」に一致させるためには、その後に も必要です。

括弧は、後で参照するために式の一部を「キャプチャ」する方法です。かっこでキャプチャされたテキストを参照してください$1$2

于 2009-10-04T23:33:31.310 に答える
2
<?php

$str = 'abc()1234';
$str= preg_replace('#([a-zA-Z()])(\d+)#', '$1 $2', $str);

echo $str;

出力:

abc() 1234

$1 と $2 は後方参照で、それぞれ最初と 2 番目にキャプチャされたグループを参照します。詳細情報 @ http://www.regular-expressions.info/brackets.html

于 2009-10-04T23:34:25.147 に答える