除去除数字外的所有内容的数字列表


a list of numbers while stripping everything but numbers

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

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);

您也可以在regex中快速使用一行。

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

这里有一个例子

Edit:删除连字符遍历结果并用空字符串

替换连字符
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);
}

更新示例

我将删除除数字和换行符以外的所有内容:

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

然后explode it:

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

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

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

PHP中用空字符串

替换每个匹配项的用法
$numbers = preg_replace("~(?!['d-]+).*~", '', $phone);
结果:

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

我错过了什么吗?

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

这个不行吗?