Skillnaden är väl att preg_match_all() skapar skapar subarrayer medan preg_splkit() gör det i en nivå. Se exempelkoden nedan. Jag är ingen stjärna på PHP men det var kul att testa i alla fall.
Kod:
<?php
class SplitStringNum
{
public function SplitStringNum1($string)
{
$stringarray = preg_split('/([0-9]+)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);;
return $stringarray;
}
public function SplitStringNum2($string)
{
preg_match_all("/([a-zA-Z]+|[0-9]+)/", $string, $stringarray);
return $stringarray;
}
public function PrintStringArray($stringarray)
{
foreach ($stringarray as $string)
{
if (is_array($string))
{
echo "-----------------------------------------\n" ;
echo "------- This also has a sub array -------\n" ;
echo "-----------------------------------------\n" ;
$this->PrintStringArray($string);
}
else
{ echo $string . "\n";
}
}
}
}
class SplitStringNumTest
{
public function Test()
{
$string = "a1b12ccc3d44";
echo "\n-----------------------------------------\n" ;
echo "First attempt to se content of parameters\n";
echo "-----------------------------------------\n" ;
$StringNum1 = new SplitStringNum();
$stringarray1 = $StringNum1->SplitStringNum1($string);
$StringNum1->PrintStringArray($stringarray1);
echo "\n-----------------------------------------\n";
echo "Second attempt to se content of parameters\n";
$StringNum2 = new SplitStringNum();
$stringarray2 = $StringNum2->SplitStringNum2($string);
$StringNum2->PrintStringArray($stringarray2);
}
}
$test = new SplitStringNumTest();
$test->Test();
?>