Hoi

Ik heb een grote string met nummers van lengtes tussen 5 en 10 en een voor en achternaam
zeg maar exact op deze manier:
<?php
$strin='143034 Rick achternaam
62360312 elisabeth blabla
1043424211 Jeroen censored';
?>
Nu wil ik alle nummers in een array zetten, dus dat het uiteindelijk zo wordt:
143034,62360312,1043424211,

zodat ik ermee kan werken.

Weet iemand hoe ik dit doe?
ik dacht aan explode space, maar zoals je ziet:
143034=[0] Rick=[1] achternaam
62360312=[2] elisabeth=[3] blabla[=4]

is [2] achternaam en het nummer :s
help
Je wil alleen de nummers toch?

<?php

$strin='143034 Rick achternaam
62360312 elisabeth blabla
1043424211 Jeroen censored';

preg_match_all('!\d+!', $strin, $matches);
print_r($matches);

?>
Je kan het checken nadat je de explode hebt uitgevoerd.


<?php
$string = '143034 Rick achternaam 62360312 elisabeth blabla 1043424211 Jeroen censored';

$array = explode(' ', $string);
$newarray = array();

foreach($array as $item)
{
 // Kijk of het item TRUE teruggeeft en zet het in de nieuwe array, anders niets doen
 (is_numeric($item) ? $newarray[] = $item : '');
}


print_r($newarray);
?>
Klein beetje uitgebreid, om ook andere white spaces dan spaties toe te laten.
Output als string of als array.

<?php
$strin='143034 Rick achternaam
62360312 elisabeth blabla
1043424211 Jeroen censored';

echo onlyNumericWords($strin, false);
echo '<hr>';
print_r (onlyNumericWords($strin, true));

function onlyNumericWords($string, $return_array = false) {
$words = preg_split('/\s+/', $string); // komt neer op: explode(ANY_WHITESPACE, $string)
$result_array = array();
$result_string = '';
foreach ($words as $word) {
if (false == is_numeric($word)) {
continue;
}
$result_array[] = $word ;
$result_string .= ' ' . $word ;
}
return $return_array ? $result_array : $result_string;
}
?>

Reageren