为了账号安全,请及时绑定邮箱和手机立即绑定

preg_replace 最后 4 位数字之间的空格

preg_replace 最后 4 位数字之间的空格

PHP
慕仙森 2021-11-19 15:19:24
我知道如何从字符串中删除空格:$text = preg_replace('/\s+/', '', $text);但是,如果我只需要删除任何数字的最后 4 位数字之间的空格怎么办?举个例子:12895 6 7 8 9 - 我想让它变成 12895 6789或者2546734 34 55 - 我想让它变成 2546734 3455或者2334734556 341 5 - 我想让它变成 2334734556 3415我怎么做?** 更新:我想删除最后四位数字之间的空格,而不是在第一个空格之后(因为所有示例都显示了空格)。所以这样的事情将是一个更好的例子:23347345563 4 1 5 - 我想让它变成 23347345563415
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

你可以用preg_replace这个正则表达式来实现你想要的:


\s+(?=(\d\s*){0,3}$)

它在它和行尾之间寻找一个空格,后跟 0 到 3 位数字(带有可选的空格)(使用正向前瞻)。只需用空字符串 ( '')替换这些空格:


$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '12895 6 7 8 9');

echo "$text\n";

$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '2546734 34 55');

echo "$text\n";

$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '2334734556 341 5');

echo "$text\n";

$text = preg_replace('/\s+(?=(\d\s*){0,3}$)/', '', '23347345563 4 1 5');

echo "$text\n";

输出:


12895 6789

2546734 3455

2334734556 3415

23347345563415


查看完整回答
反对 回复 2021-11-19
?
互换的青春

TA贡献1797条经验 获得超6个赞

function func($text, $digits = 4){

  $str = '';

  for ($i = strlen($text)-1; $i >= 0; $i--){

    if(strlen($str) < $digits && !is_numeric($text[$i]))continue;

    $str .= $text[$i];

  }

  return strrev($str);

}


$text1 = '12895 6 7 8 9';

$text2 = '2546734 34 55';

$text3 = '2334734556 341 5';



echo func($text1, 4);   //12895 6789

echo func($text2, 4);   //2546734 3455

echo func($text3, 4);   //2334734556 3415


查看完整回答
反对 回复 2021-11-19
?
三国纷争

TA贡献1804条经验 获得超7个赞

如果您正在寻找使用正则表达式的东西,请查看下面的示例。它使用匹配来获取字符串的不同部分,然后以正确的格式将其连接回。


$strings = [

    '12895 6 7 8 9',

    '2546734 34 55',

    '2334734556 341 5',

];


function formatNumber($number)

{

    preg_match('/(\d+) ?((?:[\d]\s*){4})$/', $number, $matches);


    if (!$matches) {

        return $number;

    }


    return sprintf('%s %s', $matches[1], str_replace(' ', '', $matches[2]));

}


var_dump(array_map('formatNumber', $strings));

输出:


array(3) {

  [0] =>

  string(10) "12895 6789"

  [1] =>

  string(12) "2546734 3455"

  [2] =>

  string(15) "2334734556 3415"

}


查看完整回答
反对 回复 2021-11-19
  • 3 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信