reguliere expressie (Opgelost)
qubus - 07/03/2009 16:23 (laatste wijziging 07/03/2009 16:25)
Lid
Hallo,
Ik wil uit een string, twee gedeeltes halen. Dit doe ik alsvolgt:
$string = "define('LANG_TITEL', 'Dit is een titel);";
preg_match('define\(\'(*?)\', \'(*?)\'\);', $string, $match);
list($ervoor, $erna) = $match;
echo "ERVOOR--> " . $ervoor;
echo "ERNA--> " . $erna;
$string = "define('LANG_TITEL', 'Dit is een titel);" ;
preg_match ( 'define\(\' ( * ?
) \
', \' ( * ?
) \
'\);' , $string , $match ) ; list ( $ervoor , $erna ) = $match ;
echo "ERVOOR--> " . $ervoor ;
$ervoor moet dan dus LANG_TITEL bevatten
$erna moet dan dus Dit is een titel bevatten.
Ik krijg het echter niet voor elkaar, kan iemand me helpen?
Alvast bedankt!
7 antwoorden
Gesponsorde links
Joost - 07/03/2009 16:26 (laatste wijziging 07/03/2009 16:26)
PHP expert
De enige mogelijkheid is het zo te doen:
$string = "define('LANG_TITEL', 'Dit is een titel')";
$string = "define('LANG_TITEL', 'Dit is een titel')" ;
PHP ziet het anders niet als een string met de gedefinieerde constante
qubus - 07/03/2009 16:30
Lid
Dank je, ik was er reeds achter. Het helpt me echter nog niet om de juiste twee gedeeltes uit de string te halen, kun je me daar ook bij helpen?
mothh - 07/03/2009 16:34
Onbekend
doe dit eens:
$ervoor = 'LANG_TITEL'
$erna = 'Dit is een titel'
$ervoor = 'LANG_TITEL'
$erna = 'Dit is een titel'
echo '$ervoor';
echo '$erna';
qubus - 07/03/2009 16:39
Lid
Ja.... dat begrijp ik, maar ik wil uit de string $string juist dat uiteindelijk in $ervoorhet gedeelte tussen de eerste twee '' staat, en dat in $erna het gedeelte tussen de tweede '' staat. Dit kan elke willekeurige tekst zijn, en is niet telkens LANG_TITEL en Dit is een titel.
Graag hulp bij de reguliere expressie dus....
Joost - 07/03/2009 16:41
PHP expert
$string = "define('LANG_TITEL', 'Dit is een titel');";
preg_match("#define\('(.*?)', '(.*?)'\);#i", $string, $match);
list($helemaal, $ervoor, $erna) = $match;
echo "ERVOOR--> " . $ervoor;
echo "ERNA--> " . $erna;
$string = "define('LANG_TITEL', 'Dit is een titel');" ;
preg_match ( "#define\('(.*?)', '(.*?)'\);#i" , $string , $match ) ; list ( $helemaal , $ervoor , $erna ) = $match ;
echo "ERVOOR--> " . $ervoor ;
qubus - 07/03/2009 16:45
Lid
@Medieval
Dank je wel!!!!
Werkt perfect.
Rik - 07/03/2009 16:46 (laatste wijziging 07/03/2009 16:47)
Crew algemeen
Je bent de delimiters vergeten. Daarnaast bevat match ook nog de hele string die gematched wordt:Citaat:
Array
(
[0] => define('LANG_TITEL', 'Dit is een titel');
[1] => LANG_TITEL
[2] => Dit is een titel
)
Zo zou het moeten werken als je de quotes in de invoer goed hebt:
preg_match('/define\(\'(.*?)\', \'(.*?)\'\\);/', $string, $match);
list($match, $ervoor, $erna) = $match;
preg_match ( '/define\(\' ( .* ?
) \
', \' ( .* ?
) \
'\\);/' , $string , $match ) ; list ( $match , $ervoor , $erna ) = $match ;
Edit:
Weer is te laat.
Gesponsorde links
Dit onderwerp is gesloten .