?
Onbekende gebruiker
22-10-2009 10:26
Simpele oplossing:
<?php
$string = 'nl11';
$country = '';
$number = '';
for($i = 0; $i < strlen($string); $i++)
{
if(ctype_digit($string[$i]))
{
$number .= $string[$i];
}
else
{
$country .= $string[$i];
}
}
echo 'Country: '.$country.'<br />
Number: '.$number;
?>
Uitkomst:
Country: nl
Number: 11
Of korter:
<?php
$string = 'nl11';
$number = intval($string);
$country = str_replace($number, "", $string);
?>
Dat echoen mag je uiteraard zelf doen.
[edit]Werkt inderdaad niet![/edit]
?
Onbekende gebruiker
22-10-2009 11:47
@Eddy: werkt niet, voortaan eerst even testen?
Result:
Country: nl11
Number: 0
Wat dacht je van:
<?php
$string = 'nl11';
preg_match('#^([a-z]+)([0-9]+)$#', $string, $match);
list($string, $country, $number) = $match;
?>
?
Onbekende gebruiker
22-10-2009 12:03
Preg_match is hier overkill, het kan hier namelijk met simpele string functions worden gedaan:
<?php
$string = 'nl11';
$number = ltrim($string, 'a..z');
$country = rtrim($string, '0..9');
var_dump($number, $country);
?>
Edit:
Ik heb even een test uitgevoerd met de
pear benchmark geval:
<?php
<?php
//$string = 'nl11';
require_once 'Benchmark/Iterate.php';
$benchmark = new Benchmark_Iterate;
function Karl($string) {
$number = ltrim($string, 'a..z');
$country = rtrim($string, '0..9');
echo 'Country: ' . $country . ' Number: ' . $number . '<br />';
}
function Chris($string) {
$country = '';
$number = '';
for($i = 0; $i < strlen($string); $i++)
{
if(ctype_digit($string[$i]))
{
$number .= $string[$i];
}
else
{
$country .= $string[$i];
}
}
echo 'Country: '.$country.'<br />
Number: '.$number;
}
function Miloan($string) {
preg_match('#^([a-z]+)([0-9]+)$#', $string, $match);
list($string, $country, $number) = $match;
echo 'Country: ' . $country . ' Number: ' . $number . '<br />';
}
$benchmark->run(100, 'Karl', 'nl11');
$resultkarl = $benchmark->get();
$benchmark->run(100, 'Chris', 'nl11');
$resultchris = $benchmark->get();
$benchmark->run(100, 'Miloan', 'nl11');
$resultMiloan = $benchmark->get();
var_dump($resultkarl["mean"], $resultchris["mean"], $resultMiloan["mean"]);
?>
Het resultaat is steeds ongeveer dit:
string(8) "0.000061" string(8) "0.000248" string(8) "0.000154"
Die van mij is dus het snelste, daarna die van Miloan en dan die van Chris.