String / preg_match
Om uit een (hele) lange string een bepaalde substring (alleen numerieke karakters) ben ik na LANG proberen op deze code beland:
Quote:
$string = "hfjdshfjhsjfhsjfh123456789012hfjshfjhsfjhsjfhs333334457845hjdfhdhdfjhfj34343434"
preg_match('/([0-9]{12})/', $string, $match);
echo $match[1];
$string = "hfjdshfjhsjfhsjfh123456789012hfjshfjhsfjhsjfhs333334457845hjdfhdhdfjhfj34343434"
preg_match('/([0-9]{12})/', $string, $match);
echo $match[1];
Output: 123456789012
Dit werkt uitstekend als er één 12-cijferig getal in $string zit. Als dit echter meerdere keren voorkomt, dan krijg ik (logisch ook) toch maar 1 result terug.
Hoe kan ik ervoor zorgen dat ik alle (bijvoorbeeld 3 stuks) 12-cijferige substrings terug krijg uit de "bron-string"?
Alvast bedankt voor de hulp!!
Met vriendelijke groet,
Sjef
als je nou in een while lus zet dat zolang je cijfers terugkrijgt ( van 12 ) dat hij de functie blijft herhalen totdat er geen cijfers in zitten?
Op de één of andere manier moet ik zorgen dat hij die wat hij gehad heeft wegknipt.
Dat is zeer interessant informatie zeg.
Wel heel "vrij ingewikkeld" maar wel super interessant.
Alweer vind ik het te gek om te zien wat er allemaal met PHP mogelijk is :)
Ik heb nu deze code:
Quote:
$string = "hfjdshfjhsjfhsjfh123456789012hfjshfjhsfjhsjfhs333334457845hjdfhdhdfjhfj34343434"
preg_match("/^([0-9]{12})([0-9]{10})$/", $string, $match);
print_r($match);
preg_match("/^([0-9]{12})([0-9]{10})$/", $string, $match);
print_r($match);
En aan de hand van dit voorbeeld:
Quote:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$x = "The programming republic of Perl";
preg_match("/^(m{1,2})(.*)$/", $x, $matches);
print_r($matches);
// [0] => 'mm'
// [1] => 'ing republic of Perl'
?>
$x = "The programming republic of Perl";
preg_match("/^(m{1,2})(.*)$/", $x, $matches);
print_r($matches);
// [0] => 'mm'
// [1] => 'ing republic of Perl'
?>
zou je zeggen dat ik dit terug krijg:
[0] => '012345678912'
[1] => '3333344578'
Maar ik krijg alleen maar "Array ( )" terug..?
Uit je laatste post krijg ik alleen het idee dat je alleen de 10 en 12 cijfer grote getallen wilt hebben, dan zou je d{1,} kunnen aanpassen naar d{10,} bijvoorbeeld, dan komt de laatste niet mee (want maar 8 lang).
Alle gevonden substrings komen in $matches terecht.
Ik heb inderdaad die 1 moeten aanpassen in 10.
Ideaal dit. Toppie!
Thanks en greetz,
Sjef