Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP-tiedostojen lisääminen merkkijonon keskelle

Haraldinho [03.03.2014 22:48:58]

#

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.

feenix [03.03.2014 23:45:01]

#

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.

Haraldinho [03.03.2014 23:48:24]

#

Sisältö siis haetaan tietokannasta ja tulostetaan sivulle sen jälkeen, jolloin widgetit näkyvät tekstin seassa.

The Alchemist [04.03.2014 09:56:54]

#

Luet tietysti tiedoston sisällön muuttujaan tulostamisen sijaan.

Metabolix [04.03.2014 17:20:44]

#

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);

The Alchemist [04.03.2014 18:58:31]

#

Jotenkin arvelen, että tyyppi haluaa käyttää php:tä widgetissään ja siksi se pitäisi lukea includella.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta