我有一个这样的数字列表:
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);
答案 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];
这不起作用吗?