اذا كان لدي متغير يتكون من ارقام وحروف واريد تجزئة هذا المتغير ووضع الحروف في متغير اخر والارقام في متغير ثاني كيف يتم ذلك مثلا
number=vfcg3456
num1=vfcg
num2=3456
اذا كان لدي متغير يتكون من ارقام وحروف واريد تجزئة هذا المتغير ووضع الحروف في متغير اخر والارقام في متغير ثاني كيف يتم ذلك مثلا
number=vfcg3456
num1=vfcg
num2=3456
يمكن استخدام regex لعمل ذلك بسهولة وبسطر واحد من الكود.
ولكني اردت هنا ان يكون الكود بسيط للغاية وهو كالتالي
<?php
$number = 'vfcg3456';
print_r(split_numeric_and_text($number));
function split_numeric_and_text($str)
{
$arr = str_split($str);
$result = array();
$tmp = ''; // initilize temporary collector var.
for($i = 0; $i < sizeof($arr); $i++)
{
if(is_numeric($arr[$i])) // check if current char is numeric
{
if(isset($prv) AND $prv == 1) // previous value indicator 1 for numeric 0 for text
{
$tmp .= $arr[$i];
}
else
{
if(isset($j)) // $j is array index of result, if it wasn't initilized then we need to initlize it
{
$result[$j] = $tmp; // store tmp value
$j++; // if initilized then we increase the index
}
else
{
$j = 0; // initilize
}
$tmp = $arr[$i];
}
$prv = 1;
}
else // current char is not numeric, we assume it is text tho!
{
if(isset($prv) AND $prv == 0)
{
$tmp .=$arr[$i];
}
else
{
if(isset($j))
{
$result[$j] = $tmp;
$j++;
}
else
{
$j = 0;
}
$tmp = $arr[$i];
}
$prv =0;
}
}
if(!empty($tmp)) $result[$j] = $tmp; // store remaining chunk
return $result;
}
?>