Hoi allemaal,

Ik heb een probleem, ben hier al 2 dagen mee bezig (avonden) maar ik kom er NIET uit :(

Wat ik probeer te doen:

Ik heb een template file waar ik een tag in heb staan met een soort van code woord, [INCLUDE-pagina.html].

Het eerste stuk "INCLUDE" moet door een preg_match_all eruit worden gehaald en in een array worden gestopt.
Dit lukt redelijk maar toch krijg ik een bracket mee, wat ik niet wil! :(


Ik wil dus een pattern hebben waarbij ik alle 2 de waardes kan uitlezen.

Deze waardes wil ik dus terug krijgen...

INCLUDE
pagina.html

Als jullie me kunnen helpen met het pattern dan kan ik ze zelf wel scheiden dmv een explode op het streepje.

Thanx alvast, en hopelijk kan ik na vanaaf verder :P
Heb meerdere dingen opgezocht over de patterns enzo maar mocht niet baten helaas.



Voorbeeld van mijn code:


<?php

$output = 'gfhfgjhddfj [INCLUDE-pagina.html] dfhgfhgfh';

preg_match_all("/\[.*?]/", $output, $out);

foreach($out[0] as $key => $value){
	
	$var = explode("-", $value);
}

?>
Kun je een duidelijk voorbeeld geeft van een string en wat je precies terug wilt krijgen? Want ik kan dat niet helemaal opmaken uit je post. Volgens mij heb je niet persee een preg_match_all nodig maar voldoet het volgende ook:

<?php
$string = '[some-pagina.html]';
preg_match('/\[([a-z]+)-([a-z]+\.html)\]/i', $string, $matches);
//$matches[0] = 'some'
//$matches[1] = 'pagina.html'
?>
Ja dat is gewoon wat ik nodig heb, meer niet :P

Heb nooit echt de preg_match gebruikt, en er staat (vind ik) op php.net ook niet echt een 100% duidelijk omschrijving van alle patterns enzo.

Erg bedankt maar weer hoor! :D

Duidelijk antwoord + duidelijke code.
Ja op mijn werk zit iedereen ook altijd over regexen te vloeken maar ik vindt het best duidelijk hoor als je weet wat alle modifiers en patterns betekenen :)

Graag gedaan!
Dan nog een kleine vraag, ik niet dat hij niet automatisch de .html erachter plakt maar dat ook gewoon automatisch eruit vist...

Kan je helpen :P als ik dat weghaal gaat hij gelijk flippen haha xD
Dus dat je some en pagina krijgt?

<?php
$string = '[some-pagina.html]';
preg_match('/\[([a-z]+)-([a-z]+)\.html\]/i', $string, $matches);
//$matches[0] = 'some'
//$matches[1] = 'pagina'
?>

Stel je wilt extensie ook checken/afdwingen:

<?php
$string = '[some-pagina.html]';
preg_match('/\[([a-z]+)-([a-z]+)\.(html|phtml|tpl)\]/i', $string, $matches);
//$matches[0] = 'some'
//$matches[1] = 'pagina'
//$matches[2] = type template
?>
Kijk, jij legt het ook gewoon goed uit :D

Maar die extentie hoef je niet apart te doen, als hij gewoon pagina.html eruit haalt is dat genoeg.

Want dan kan ik het laten vervangen door de wat er staat, bijvoorbeeld pagina.html includen snappie.
Mijn eerste regex die haalt toch ook al pagina.html eruit? :X
Ja maar als er inplaats van .html .tpl staat dan haalt hij hem er niet uit. En bij de 2e regex geeft hij een 2e array waarde.. :$
En bij de 2e regex geeft hij een 2e array waarde.. :$

En wat is de output van de array?
Ja bij de 2e regex haalt hij er 3 uit.

some
pagina
.html

Maar ik wil dit:

some
pagina.html

En als ik het zelf wist had ik het wel gedaan, maar weet gewoon niet hoe :P

Reageren