一个数字列表,同时剥离除数字之外的所有内容

时间:2013-03-08 07:56:05

标签: php preg-replace explode

我有一个这样的数字列表:

123-4-5679 tha
546-5465-7 dsf
98-4564-64 ds8

我希望在除了数字之外的所有内容时都会爆炸它自己的价值。我正在做,但似乎保留了所有内容,但它确实给了我每行的价值

$pn = preg_replace("/\r/", "\n", preg_replace("/\r\n/", "\n", $_POST['phone']));
$phone_numbers = explode("\n", $pn);

4 个答案:

答案 0 :(得分:4)

你也可以用正则表达式中的一个快速行来完成。

preg_match_all(":([0-9-]+):mi", $_POST["phone"], $match);

这是example

编辑:删除连字符迭代结果并用空字符串替换连字符

preg_match_all(":([0-9-]+):mi", $_POST["phone"], $matches);

// remove extra match array
$matches = array_shift($matches);

foreach( $matches as & $match )
{
   $match = preg_replace(":-:", "", $match);
}

更新了example

答案 1 :(得分:1)

我除了数字和换行符之外的所有内容:

$cleaned = preg_replace("/[^0-9\n]/", "", $_POST['phone']);

然后explode

$numbers = explode("\n", $cleaned);

答案 2 :(得分:0)

保留所有数字,除了行分隔符之外的所有其他内容:

~(?![\d-]+).*~

用PHP替换每个匹配的空字符串

$numbers = preg_replace("~(?![\d-]+).*~", '', $phone);

结果:

123-4-5679
546-5465-7
98-4564-64

答案 3 :(得分:-2)

好的,我错过了一些东西吗?

$phone = explode(' ', $_POST['phone']);
$phone_number = $phone[0];

这不起作用吗?