Autor Zpráva
tomtom177
Profil *
Dobrý den,

měl bych jeden dotaz. Mám nějaký text stránky a v něm se může na jakémkoliv místě vyskytovat tento text: {galerie XX} kde místo XX je nějaké číslo. Chtěl bych docílit toho, že tento kus nahradím jiným textem. Například takto:
reg_replace("({galerie [0-9]})", 'nejaky text', $body)

Jak ale docílím toho, abych číslo XX uložil do nějaké proměnné? Ukážu na příkladu proč bych to tak chtěl:
$body = 'tady to je nejaky text stranky. a sem umistime galerii s ID 13: {galerie 13}'; // obsah stranky
//zde bych do promenne $id_galerie potreboval ulozit jeji ID, tedy cislo 13
$obsah_galerie = file_get_content('galerie-'.$id_galerie.'.php'); // do promenne obsah_galerie si nactu obsah galerie 13 ze souboru galerie-13.php
$body = reg_replace("({galerie [0-9]})", $obsah_galerie, $body) // nahradime text {galerie 13} ve strance samotnou galerii
echo $body; // vypiseme stranku

Jak tedy uložit číslo 13 do proměnné $obsah_galerie?

Děkuji za tipy
candiess
Profil
zkus to přes explode a pak si s tím pohrát, je t neelegantní řešení ale tak ještě nad tím popřemýšlím :)
Borius
Profil
tomtom177:
Přes regulární výraz.
preg_match('/{galerie (?P<id_galerie>[0-9]+)}/', $body, $matches);
$id_galerie=$matches['id_galerie'];
Nyní platí např. $id_galerie=13
Tori
Profil
tomtom177:
// do promenne obsah_galerie si nactu obsah galerie 13 ze souboru galerie-13.php
To je obyčejné HTML v souboru s koncovkou .php, anebo je to opravdu skript, který se má provést? Pokud skript, tak je potřeba načíst ne jeho kód, ale výsledek: file_get_contents('http://muj.web.cz/galerie-13.php');
Jinak v těch skriptech galerie-1galerie-x asi bude dost shodných částí kódu, ne? Nebylo by lepší udělat jen jeden skript, co dostane ID galerie jako parametr (galerie.php?id=13)? Nemusíte pak pro každou novou galerii nakopírovat nový skript.


A nahrazování bych v tomhle případě asi řešila přes callback:
function vlozGalerii($id)  {
  $url = 'http://neco.nekde.cz/galerie.php?id='.(int)$id;
  return file_get_contents($url);
}

$body = preg_replace('/{galerie (?P<id_galerie>[0-9]+)}/', vlozGalerii('$1'), $body);
tomtom177
Profil *
Super,

Děkuju Vám!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: