Preg_replace除+以外的所有非数字字符 - php

我想替换字符串中除+以外的所有非数字字符。

我已经尝试过this问题,但是它不起作用...

这是我目前所拥有的:

$nn = preg_replace("/([^0-9\/+]+)/", "", $string );

除了以任何方式删除+之外,它都有效100%。

编辑

我的输入将始终仅包含1 +,并且如果输入更多,则应将其删除。

基本上,如果用户输入的电话号码为(015) 234-2634,则应将其返回为+27152342634(南非国家/地区代码-我在以后添加+27),但是如果输入+27 (15) 234-2634,则应输入+27152342634回来。

参考方案

您应该可以使用以下正则表达式执行此操作:

[^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

更新(仅保留第一个匹配的+
根据最新的问题更新,您还只想保留找到的第一个+符号。为此,由于可能没有关于第一个符号位置的“规则”(例如“它必须是字符串中的第一个字符”),所以我建议使用除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个+符号,它将获得结果的子字符串,直到第一个+,然后执行字符串-replacement替换所有剩余的+符号。您也可以在此处始终使用第二个preg_replace(),但是仅删除+符号将是多余的。

这是示例的codepad条目。

php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…

preg_match不捕获内容 - php

我的preg_match有什么问题?preg_match('numVar("XYZ-(.*)");',$var,$results); 我想从这里获取所有内容:numVar(“ XYZ-CONTENT”);感谢您的任何帮助! 参考方案 我认为这是PHP?如果是这样,则您的代码存在三个问题。PHP的PCRE函数要求使用分隔…

在Java中,执行“ ++++++++”表达式,编译器未报告任何错误并且可以正确执行? - java

我用eclipse编写了这段代码,用war写过,结果为3d。public static void main(String[] args) { double a = 5d + + + + + +-+3d; System.out.println(a); } 参考方案 您的表情可以改写为(5d) + (+ + + + +-+3d) 其中第一个+是应用于两个操作数的…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…