次の正規表現でそれを行うことができるはずです:
[^0-9+]
でpreg_replace()
:
$nn = preg_replace('/[^0-9+]/', '', $string);
現在の正規表現もスラッシュを保持しているため、その機能を維持するには次のようにします。
$nn = preg_replace('/[^0-9\/+]/', '', $string);
出力付きのサンプルコード:
<?php
$string = '+27 (15) 234-2634';
$nn = preg_replace("/[^0-9+]/", "", $string );
echo $nn . "\n";
?>
結果:
+27152342634
UPDATE(最初の一致のみを保持+
)
最新の質問更新ごとに、最初 +
に見つかったシンボルのみを保持する必要もあります。これを行うには、最初の記号の位置に関する「ルール」がない可能性があるため(「文字列の最初の文字である必要がある」など)、次以外の追加の方法を使用することをお勧めしますpreg_replace()
。
$nn = preg_replace("/[^0-9+]/", "", $string);
if (substr_count($nn, '+') > 1) {
$firstPlus = strpos($nn, '+') + 1;
$nn = substr($nn, 0, $firstPlus) . str_replace('+', '', substr($nn, $firstPlus));
}
このコードはpreg_replace()
通常どおり元のコードを実行+
し、結果に複数の記号がある場合は、最初の記号までの結果のサブ文字列を取得し、+
文字列置換を実行して残りのすべての+
記号を置き換えます。ここでもいつでも1秒を使用できますが、シンボルpreg_replace()
のみを削除するのはやり過ぎです。+
これがサンプルのコードパッドエントリです。