2015-11-25 2 views
-3
$str = 'ABC300'; 

Как я могу получить значение какОтдельные буквы и цифры из строки

$alphabets = "ABC"; 
$numbers = 333; 
+0

Будет ли образец a всегда будет 3 номера, за которыми следуют 3 буквы? – Ohgodwhy

+0

'$ alphabets = ABC;' если вы не хотите, чтобы это оценивалось как константа, вы, вероятно, имели в виду '$ alphabets =" ABC ";' –

+0

@Ohgodwhy: Нет, он будет динамичным. В конце алфавиты будут начинаться с угловых чисел. – amitshree

ответ

1

У меня есть идея, первые удалить цифры из строки и сохранить в переменном. затем удалите алфавиты из переменной $ str и сохраните. попробуйте код

$str = 'ABC300'; 
$alf= trim(str_replace(range(0,9),'',$str));//removes number from the string 
$number = preg_replace('/[A-Za-z]+/', '', $str);// removes alphabets from the string 
echo $alf,$number;// your expected output 
+0

Вам понадобится '[A-Za-z ] 'или модификатор' i'. – chris85

+0

@ chris85: yes correct –

0

Способ сделать это, чтобы найти все цифры и использовать массив, чтобы заменить оригинальную строку цифрами внутри.

Например

function extractDigits($string){ 
    preg_match_all('/([\d]+)/', $string, $match); 

    return $match[0]; 
} 

$str = 'abcd1234ab12'; 
$digitsArray = extractDigits($str); 
$allAlphas = str_replace($digitsArray,'',$str); 
$allDigits = ''; 
foreach($digitsArray as $digit){ 
    $allDigits .= $digit; 
} 
+0

Не нужен класс символов и опечатка '($ str):'. – chris85

+0

Typo fixed, спасибо – PAlphen

0

попробовать что-то вроде этого (это не так быстро) ...

$string = "ABCDE3883475"; 
$numbers = ""; 
$alphabets = ""; 
$strlen = strlen($string); 
for($i = 0; $i <= $strlen; $i++) { 
    $char = substr($string, $i, 1); 
    if(is_numeric($char)) { 
     $numbers .= $char; 
    } else { 
     $alphabets .= $char; 
    } 
} 

Тогда все цифры должны быть в $numbers и все алфавитные символы должны быть в $alphabets;)

https://3v4l.org/Xh4FR

Смежные вопросы