Как отделить буквы и цифры от строки в php - PullRequest
9 голосов
/ 30 ноября 2010

У меня есть строка, которая представляет собой комбинацию букв и цифр. Для моего приложения я должен отделить строку с буквами и цифрами: например, если моя строка "12jan", я должен получить "12" "jan" отдельно

Ответы [ 8 ]

13 голосов
/ 30 ноября 2010

Вы можете использовать preg_split, чтобы разбить вашу строку в точке, которой предшествует цифра, а за ней следуют буквы:

$arr = preg_split('/(?<=[0-9])(?=[a-z]+)/i',$str);

Код в действии

<?php
$str = '12jan';
$arr = preg_split('/(?<=[0-9])(?=[a-z]+)/i',$str);                                                               
print_r($arr);

Результат:

Array
(
    [0] => 12
    [1] => jan
)
10 голосов
/ 30 ноября 2010
$numbers = preg_replace('/[^0-9]/', '', $str);
$letters = preg_replace('/[^a-zA-Z]/', '', $str);
7 голосов
/ 30 ноября 2010
$string = "12312313sdfsdf24234";
preg_match_all('/([0-9]+|[a-zA-Z]+)/',$string,$matches);
print_r($matches);

это может работать намного лучше

5 голосов
/ 30 ноября 2010
preg_match_all('/^(\d+)(\w+)$/', $str, $matches);

var_dump($matches);

$day = $matches[1][0];
$month = $matches[2][0];

Конечно, это работает только тогда, когда ваши строки в точности соответствуют описанию "abc123" (без добавления или добавления пробела).

Если вы хотите получить все числаи символы, вы можете сделать это с одним регулярным выражением.

preg_match_all('/(\d)|(\w)/', $str, $matches);

$numbers = implode($matches[1]);
$letters = implode($matches[2]);

var_dump($numbers, $letters);

Смотрите это!

1 голос
/ 23 ноября 2016

Это работает для меня согласно моему требованию, вы можете редактировать согласно вашему

function stringSeperator($string,$type_return){

    $numbers =array();
    $alpha = array();
    $array = str_split($string);
    for($x = 0; $x< count($array); $x++){
        if(is_numeric($array[$x]))
            array_push($numbers,$array[$x]);
        else
            array_push($alpha,$array[$x]);
    }// end for         

    $alpha = implode($alpha);
    $numbers = implode($numbers);

    if($type_return == 'number')    
    return $numbers;
    elseif($type_return == 'alpha')
    return $alpha;

}// end function
0 голосов
/ 09 июля 2017
<?php
$data = "#c1";
$fin =  ltrim($data,'#c');
echo $fin;
?>
0 голосов
/ 08 октября 2015

Проработав больше с PHPExcel, такие операции распространены.#Tapase ,.Вот preg_split, который вы хотите получить с пробелом в строке.

<?php
$str = "12 January";
$tempContents = preg_split("/[\s]+/", $str);
foreach($tempContents as $temp){
echo '<br/>'.$temp;
}
?>

Вы можете добавить запятую рядом с s для разделенной запятойНадеюсь, это кому-нибудь поможет.Антон К.

0 голосов
/ 30 ноября 2010

Попробуйте:

$string="12jan";
$chars = '';
$nums = '';
for ($index=0;$index<strlen($string);$index++) {
    if(isNumber($string[$index]))
        $nums .= $string[$index];
    else    
        $chars .= $string[$index];
}
echo "Chars: -$chars-<br>Nums: -$nums-";


function isNumber($c) {
    return preg_match('/[0-9]/', $c);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...