У меня есть строка, которая представляет собой комбинацию букв и цифр. Для моего приложения я должен отделить строку с буквами и цифрами: ex: Если моя строка «12jan», я хочу, чтобы «12» «jan» отдельно ..
Вы можете использовать preg_split
для разделения строки в точке, которой предшествует цифра, а за ней следуют буквы:
$arr = preg_split('/(?<=[0-9])(?=[az]+)/i',$str);
Код в действии
<?php $str = '12jan'; $arr = preg_split('/(?<=[0-9])(?=[az]+)/i',$str); print_r($arr);
Результат:
Array ( [0] => 12 [1] => jan )
$numbers = preg_replace('/[^0-9]/', '', $str); $letters = preg_replace('/[^a-zA-Z]/', '', $str);
$string = "12312313sdfsdf24234"; preg_match_all('/([0-9]+|[a-zA-Z]+)/',$string,$matches); print_r($matches);
это может работать намного лучше
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);
Видеть это!
Это работает для меня в соответствии с моим требованием, вы можете редактировать по своему усмотрению
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
Попробуй это :
$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); }
Работая с PHPExcel, такие операции являются общими. #Tapase ,. Вот preg_split, который хочет, чтобы вы захотели с пространством внутри строки.
<?php $str = "12 January"; $tempContents = preg_split("/[\s]+/", $str); foreach($tempContents as $temp){ echo '<br/>'.$temp; } ?>
Вы можете добавить запятую рядом с s для разделенной запятой. Надеюсь, это поможет кому-то. Антон К.
<?php $data = "#c1"; $fin = ltrim($data,'#c'); echo $fin; ?>