Hallo mensen,

Ik ben op het moment bezig met mijn eigen blog en probeer nu via preg_match_all alles te vinden wat ik tussen code tags heb geplaats. Zodat ik dit op een andere plek op het scherm kan tonen.
Nu had ik dit even gemaakt:
<?php
function FindCode($between){
preg_match_all('/<code>(.*?)<\/code>/s', $between, $matches);
return $matches;
}

var_dump(FindCode('Het is dus de bedoeling dat wanneer ik dit uit de database lees ik alles wat tussen de html code tags staat kan lezen.<code>Dus $matches moet nu alles returnen wat hier tussen code tags staat!</code>'));
?>
En uit mijn var_dump komt nu dit:
array(2) { [0]=> array(1) { [0]=> string(81) "Dus $matches moet nu alles returnen wat hier tussen code tags staat!" } [1]=> array(1) { [0]=> string(68) "Dus $matches moet nu alles returnen wat hier tussen code tags staat!" } }

Nu heb ik al eigenlijk elke mogelijke combinatie geprobeert maar ik kom er maar niet uit. Ik heb nog even gegoogled op preg_match_all en dan kom ik op de zelfde code uit als die ik nu al heb.
hmm wil je dat doen voor een archief achtig iets?
Wat gaat er dan mis, naar mijn mening is dit precies wat je wilt. Preg_match_all geeft dit altijd terug:
Array {
  [0] => Array(
    'array met het deel dat is gematched',
  ),
  [1] => Array(
    'array met de eerste capture group',
  ),
  [2] => Array(
    'array met de tweede capture group',
  ),
  ...
}
Wouter, wanneer ik dan dit echo $matches[1];
Krijg ik Array op het scherm. Maar ik wil de zin hebben die erin staat.
Dat komt omdat $matches[1] ook een array is met daarin alle matches. Je moet dus door $matches[1] lopen en dan heb je alle tekst tussen codeblokken. Stel je hebt deze string:
Lorem ipsum submit a form by using 
<code><input type=submit value=submit></code>
and handle it with
<code>if ($_SERVER['REQUEST_METHOD'] == 'POST')</code>


Dan krijg je dit terug in $matches[1]:
Array (
  '<input type=submit value=submit>',
  'if ($_SERVER['REQUEST_METHOD'] == 'POST')',
)
Ah Wouter bedankt, had al iets zien staan van $matches[0][1]; maar dan zal ik daar nog eens naar kijken.

Reageren