Hei, haluaisin kysyä, miten voisin tehdä sellaisen systeemin, jonka avulla voin korvata tietyn merkkijonon esiintymän PHP:n include -komennolla. Eli ensin tietokannasta haetaan sivun sisältö, joka sisältää esimerkiksi esiintymän "{{MY_WIDGET}}". Tuo esiintymä sitten korvattaisiin tietyllä tiedostolla, esim. (widgets/my_widget.php).
Muutenhan tuo onnistuisi, mutta kun tiedoston sisällön tulee olla juuri siinä kohdassa sivun sisältöä, missä esiintymä sijaitsi - muun tekstin seassa.
Yritin väkertää jotain mm. exploden ja vaikka minkä muun komennon avulla, mutten onnistunut...
Toivon, että ymmärsitte asian ytimen.
Oletan, että haluat siis ajaa tuon tiedoston PHP:n läpi etkä vain kopioida sen sisältöä tuohon kohtaan? Fiksumpaa lienisi tehdä funktio, jota kutsut ja joka joko tulostaa tarvittavat asiat, tai palauttaa ne merkkijonona ja tämän avulla sitten hoitaisit tuon korvaamisen. Menee helposti aikamoiseksi viritelmäksi muuten ja vaikeampi selvittää ongelmia.
Sisältö siis haetaan tietokannasta ja tulostetaan sivulle sen jälkeen, jolloin widgetit näkyvät tekstin seassa.
Luet tietysti tiedoston sisällön muuttujaan tulostamisen sijaan.
Voit käyttää funktiota preg_replace_callback hieman poikkeuksellisella tavalla.
<?php function tulostus($m) { switch (@$m[1]) { case "MY_WIDGET": readfile("widgets/my_widget.php"); // Tai: include("widgets/my_widget.php"); return; default: echo $m[0]; } } $teksti = "plaa {{MY_WIDGET}} plaa"; preg_replace_callback("/\\{\\{([-_a-zA-Z0-9]+)\\}\\}|[^{}]*|./", "tulostus", $teksti);
Jotenkin arvelen, että tyyppi haluaa käyttää php:tä widgetissään ja siksi se pitäisi lukea includella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.