如何在PHP中排除除数字之外的所有内容?

时间:2011-12-20 01:59:04

标签: php regex

  

可能重复:
  PHP code to remove everything but numbers

我有一个返回一些内容的循环,我想过滤以便我只返回数字:

foreach ($number as $k => $content) {
    echo "<td>" . $content . "</td>";
}

这将返回:

Sender Number,,
1818233483,, - aaa
1562595441,, - aaa
1870750493,, - aaa
1832677004,, - aaa
1832466803,, - aaa

我想做一些regexp之王或其他什么,所以我只过滤数字:

1818233483
1562595441
1870750493
1832677004
1832466803

我也不确定那里会有什么字符所以我需要检查除了数字之外的所有字符。

任何想法? 感谢

编辑: 我这样做了:     $ test = preg_replace(“/ [^ 0-9] /”,“”,$ content);

但我明白了:

Sender Number,,
1818233483
1562595441
1870750493
..

2 个答案:

答案 0 :(得分:3)

使用此:

foreach ($number as $k => $content) {
    echo "<td>" . preg_replace( '/[^0-9]/', '', $content) . "</td>";
}

编辑:尝试此操作以删除发件人编号,

foreach($number as $k => $content) {
    if(is_numeric(substr($content, 0, 4)) {
        echo "<td>" . preg_replace( '/[^0-9]/', '', $content) . "</td>";
    }
}

答案 1 :(得分:2)

尝试使用preg_replace

替换所有不是数字的字符
foreach ($number as $k => $content) {
    echo "<td>" . preg_replace( '/[^0-9]/', '', $content) . "</td>";
}

更有效的方法可能是对逗号进行字符串处理,如下所示:

foreach ($number as $k => $content) {
    echo "<td>" . substr($content, 0, strpos( $content, ',')) . "</td>";
}