簡體   English   中英

如果大於 X,則刪除數字 - PHP

[英]Remove numbers if greater than X - PHP

我正在從$name刪除數字,如下所示:

$name = str_replace (array ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'), '' , $namewithoutnumber);

是否可以僅在數字超過X 的情況下刪除數字,例如:joe123456(六個字符)而不是:joe123 或 1joe1234?

您可以使用preg_replace將名稱中的所有數字刪除,如果新名稱的長度比舊名稱少 6 或更多,則替換舊名稱:

$names = array('joe123456',
               'joe123',
               '1joe1234',
               '123joe456');

foreach ($names as $name) {
    $new_name = preg_replace('/\d/', '', $name);
    if (strlen($new_name) <= strlen($name) - 6) {
        $name = $new_name;
    }
    echo "$name\n";
}

輸出:

joe
joe123
1joe1234
joe

3v4l.org 上的演示

我認為就是這樣:

preg_match_all('!\d+!', $namewithoutnumber, $matches);
$numbers = implode('', $matches[0]);

if( strlen($numbers) > 5 ) {
  $name = str_replace (array ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'), '' , $namewithoutnumber);
}

另外一個選項:

<?php

$names = array('joe123456',
               'joe123',
               '1joe1234',
               '123joe456',
               '1234567joe12345');

$new_names = [];

foreach ($names as $name) {
    if (preg_match("/\d{6}+/", $name)) {
        $new_names[] = preg_replace('/\d/', '', $name);
    } else {
        $new_names[] = $name;
    }
}

var_dump($new_names);

產量:

array(5) {
  [0]=>
  string(3) "joe"
  [1]=>
  string(6) "joe123"
  [2]=>
  string(8) "1joe1234"
  [3]=>
  string(9) "123joe456"
  [4]=>
  string(3) "joe"
}

絕對地; 只需通過strlen()函數運行它:

if (strlen($namewithoutnumber) > 5) {
  $name = str_replace (array ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'), '' , $namewithoutnumber);
}

您可以為此使用preg_replace

$name = preg_replace('/[0-9]{6,}/', '', $name_with_too_long_numbers);

沒有預匹配解決方案:

<?php function searchAndReplace($array, $string, $max_search)
{
    $count = 0;
    foreach ($array as $arr) {
        $count += substr_count($string, $arr);
        if ($count >= $max_search) return str_replace($array,'',$string);
    }
    return $string;
}
function removeNumbers($string)
{   
    $array = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    return searchAndReplace($array, $string, 6);
}
echo removeNumbers('joe123456'); //joe
echo removeNumbers('joe123'); //joe123
echo removeNumbers('1joe1234'); //1joe1234

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM