文字と数字を組み合わせた文字列があります。私のアプリケーションでは、文字列を文字と数字で区切る必要があります。例:文字列が「12jan」の場合、「12」「jan」を個別に取得する必要があります。
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
)
$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"(空白が追加または追加されていない)の場合にのみ機能します。
すべての数字と文字を取得したい場合は、1つの正規表現でそれを行うことができます。
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
<?php
$data = "#c1";
$fin = ltrim($data,'#c');
echo $fin;
?>
PHPExcelをさらに活用したことで、このような操作は一般的です。 #Tapase、。これは、文字列内にスペースを入れて必要なものを取得するpreg_splitです。
<?php
$str = "12 January";
$tempContents = preg_split("/[\s]+/", $str);
foreach($tempContents as $temp){
echo '<br/>'.$temp;
}
?>
sの横にカンマを追加して、カンマを区切ることができます。それが誰かを助けることを願っています。アントンK。
これを試して :
$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);
}