Vraag & Antwoord

Webprogrammeren & scripting

[PHP]foreach-loop doet niets...

5 antwoorden
  • Ik heb een brok code die ik wil uit laten voeren over een forumbericht. Die begint zo: [code:1:09e63be861]//Hebben we een boek-bbcode? preg_match( "#\[boek\]([0-9]+)\[/boek]#", $message, $matches ); $isbn = $matches[1]; unset($matches);[/code:1:09e63be861] Met die $isbn wordt vervolgens de rest gedaan. Werkt goed. Probleem is echter, dat als er meerdere keren een [boek]-bbcode wordt gebruikt in het forumbericht, alleen de eerste wordt verwerkt. Daarom wilde ik een foreach-loop omheen bouwen: [code:1:09e63be861]preg_match( "#\[boek\]([0-9]+)\[/boek]#", $message, $isbnin ); foreach ($isbnin as $isbn) {[/code:1:09e63be861] Maar dan lijkt $isbn dus ineens leeg te zijn. Wat doe ik hier fout?
  • Update... Ben alweer wat verder. Ik heb het zo getest: [code:1:9280ce5369]$isbnin = array('9075504764', '9021580594'); foreach ($isbnin as $isbn) {[/code:1:9280ce5369] En dan wordt alles netjes gedaan. Doe ik echter hetvolgende: [code:1:9280ce5369]preg_match( "#\[boek\]([0-9]+)\[/boek]#", $message, $isbnin ); foreach ($isbnin as $isbn) {[/code:1:9280ce5369] Dan gebeurt er niets. Terwijl ik toch altijd heb begrepen dat met een preg_match de $isbnin een array wordt. Ofwel, hetzelfde. Waarom krijg ik dan niets eruit?
  • Nu ben ik totaal geen ster in regular expressions, maar volgens mij ga je op zoek naar iets als "[boek]1234567890[/boek]". En dat is wat anders dan alleen een isbn-nummer...
  • Een preg_match werkt (bij mijn weten) zo: [code:1:f69f38da96]preg_match($patroon, $inputstring, $outputarray ); [/code:1:f69f38da96] $patroon is in dit geval [b:f69f38da96]"#\[boek\]([0-9]+)\[/boek]#"[/b:f69f38da96]. Wat hij dus zoek is naar een patroon met [b:f69f38da96][boek]{aantal cijfers}[/boek][/b:f69f38da96], waarbij {aantal cijfers} variabel is. Die slaat hij op in de $outputarray. Wat me echter nu pas opvalt: ik vergeet de laatste blokhaak te escapen, dus het patroon klopt niet. Heb het script nu niet bij de hand, maar ga hier vanavond hoopvol mee verder. :)
  • preg_match[1] geeft je niet wat je wilt. Kijk eens goed in de documentatie. Wat jij zoekt is preg_replace of [url=http://nl3.php.net/manual/en/function.preg-match-all.php]preg_match_all[/url]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.