PHP interesse |
|
Hallo,
Ik zit met een ideetje, weet dat het met regexjes moet, maar verder weet ik niet goed hoe ik het kan bereiken. (Ik ben namelijk nooit een specialist geweest in regex).
Mijn doel is om "menu's te parsen". Het is de bedoeling dat er via PHP bepaalde zaken uit de database worden gehaald en dat die dan op de juiste plaats komen te staan. Ik ga het proberen te verduidelijk met een voorbeeldje. (Wat die tekst dat ik hier zonet schreef verstaat toch niemand )
Stel dat het volgende bestand mijn template-bestand is:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Een titletje</title>
</head>
<body>
<div id="headermenu">{$MENU#0}</div>
<div id="left">{$MENU#1}</div>
<div id="right">
<p>Uiteraard is dit maar ter voorbeeld bedoeld, mijn echte template is net iets complexer :-)</p>
</div>
<div id="footer">{$MENU#2}</div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <div id="headermenu">{$MENU#0} </div> <div id="left">{$MENU#1} </div> <p>Uiteraard is dit maar ter voorbeeld bedoeld, mijn echte template is net iets complexer :-) </p> <div id="footer">{$MENU#2} </div>
Zoals je ziet gebruik ik enkele maal {$MENU#ID}, dat is dan ook wat ik wil gaan "replacen" (een preg_replace wellicht)
Nu stel dat ik voor menu0, menu1, menu2 het volgende uit de database haal.
<!-- menu 0 -->
<a href="#">MenuItem0</a> <a href="#">MenuItem1</a> <a href="#">MenuItem3</a>
<!-- menu 1 -->
<ul>
<li><a href="#">MenuItem0</a></li>
<li><a href="#">MenuItem1</a></li>
<li><a href="#">MenuItem2</a></li>
<li><a href="#">MenuItem3</a></li>
<li><a href="#">MenuItem4</a></li>
</ul>
<!-- menu 2 -->
<a href="#">MenuItem0</a> <a href="#">MenuItem1</a> <a href="#">MenuItem3</a>
<!-- menu 0 --> <a href="#">MenuItem0 </a> <a href="#">MenuItem1 </a> <a href="#">MenuItem3 </a> <!-- menu 1 --> <li><a href="#">MenuItem0 </a></li> <li><a href="#">MenuItem1 </a></li> <li><a href="#">MenuItem2 </a></li> <li><a href="#">MenuItem3 </a></li> <li><a href="#">MenuItem4 </a></li> <!-- menu 2 --> <a href="#">MenuItem0 </a> <a href="#">MenuItem1 </a> <a href="#">MenuItem3 </a>
Dan wil ik via PHP de eerste code dus netjes parsen tot het volgende:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Een titletje</title>
</head>
<body>
<div id="headermenu"><a href="#">MenuItem0</a> <a href="#">MenuItem1</a> <a href="#">MenuItem3</a></div>
<div id="left">
<ul>
<li><a href="#">MenuItem0</a></li>
<li><a href="#">MenuItem1</a></li>
<li><a href="#">MenuItem2</a></li>
<li><a href="#">MenuItem3</a></li>
<li><a href="#">MenuItem4</a></li>
</ul>
</div>
<div id="right">
<p>Uiteraard is dit maar ter voorbeeld bedoeld, mijn echte template is net iets complexer :-)</p>
</div>
<div id="footer"><a href="#">MenuItem0</a> <a href="#">MenuItem1</a> <a href="#">MenuItem3</a></div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <div id="headermenu"><a href="#">MenuItem0 </a> <a href="#">MenuItem1 </a> <a href="#">MenuItem3 </a></div> <li><a href="#">MenuItem0 </a></li> <li><a href="#">MenuItem1 </a></li> <li><a href="#">MenuItem2 </a></li> <li><a href="#">MenuItem3 </a></li> <li><a href="#">MenuItem4 </a></li> <p>Uiteraard is dit maar ter voorbeeld bedoeld, mijn echte template is net iets complexer :-) </p> <div id="footer"><a href="#">MenuItem0 </a> <a href="#">MenuItem1 </a> <a href="#">MenuItem3 </a></div>
Ik heb echter geen idee hoe ik dit het best kan bereiken. Voor alle duidelijkheid, ik verwacht niet van jullie dat jullie het maken voor mij (d'uh), maar ik hoop dat jullie mij wat op weg kunnen zetten...
|