login  Naam:   Wachtwoord: 
Registreer je!
 Forum

regex (preg_replace) (Opgelost)

Offline Wim - 16/07/2007 16:29
Avatar van WimCrew algemeen Ik ben bezig aan een photoalbum maar heb me nooit verdiept in rexex, oa PHP.net: preg_replace.

Nu lees ik per foto een bestand uit (is snel genoeg, want alles wordt gecached!), en hier haal ik data uit. Een voorbeeld is dit bvb:
Citaat:
<title>Cat's having fun...</titel>
<description>Je wandelt naar den hof, en ge ziet uw kat daar zitten......*KLIK* foto :-)</description>


deze code gebruik ik, het bovenstaande bestand zit volledig in $content!
  1. <?php
  2. $title = preg_replace('!<title>(.*?)</title>!', "\\1", $content);
  3. $description = preg_replace('!<description>(.*?)</description>!', "\\1", $content);
  4. $tpl->assign('title', $title);
  5. $tpl->assign('description', $description);
  6. ?>


Het probleem, zowel bij $title als $description krijg ik telkens de volledige inhoud van $content. Iemand die dit kan oplossen?

6 antwoorden

Gesponsorde links
Offline Stijn - 16/07/2007 16:50
Avatar van Stijn PHP expert $var = preg_replace(... , ... , $content); zal de gewijzigde inhoud niet opslaan in $var maar in $content . Dit kan je doen:

  1. <?php
  2. preg_replace('!<title>(.*?)</title>!', "\\1", $content);
  3. $tpl->assign('title', $content);
  4. preg_replace('!<description>(.*?)</description>!', "\\1", $content);
  5. $tpl->assign('description', $content);
  6. ?>
Offline Wim - 16/07/2007 17:06
Avatar van Wim Crew algemeen nog steeds hetzelfde probleem!
Offline Stijn - 16/07/2007 17:10 (laatste wijziging 16/07/2007 17:13)
Avatar van Stijn PHP expert owja je regex is beetje verkeerd 

  1. <?php
  2. preg_replace('!\<title\>(.*?)\<\/title\>!', "\\1", $content);
  3. $tpl->assign('title', $content);
  4. preg_replace('!\<description\>(.*?)\<\/description\>!', "\\1", $content);
  5. $tpl->assign('description', $content);
  6. ?>

edit:

Probeer dit eens:
  1. <?php
  2. $title = preg_replace('!\<title\>(.*?)\<\/title\>!', "\\1", $content);
  3. $description = preg_replace('!\<description\>(.*?)\<\/description\>!', "\\1", $content);
  4. $tpl->assign('title', $title);
  5. $tpl->assign('description', $description);
  6. ?>
Offline Wim - 16/07/2007 17:21
Avatar van Wim Crew algemeen hmm er is al een kleine vooruitgang: <title> en </title> gaan al uit m'n code uit. Al de rest staat er echter nog 

nu staat er zoiets:
{title}<description>{description}</description}

daarstrx zoiets:
<title>{title}</title><description>{description}</description}

wat ik wil
{title} en {description} appart 
Offline Flex1986 - 16/07/2007 17:42
Avatar van Flex1986 Gouden medaille

Senior Member
Uit wat voor type bestand haal je de data? Is het een xml bestand? (daar lijkt het in ieder geval op) Dan kun je PHP.net: simplexml gebruiken. Werkt vrij simpel  
Offline Wim - 16/07/2007 17:45 (laatste wijziging 16/07/2007 18:05)
Avatar van Wim Crew algemeen plain text gewoon, met een (onbelangrijke) .txt extentie.

het bestand wordt normaal trouwens met php aangemaakt!

EDIT:
wow, werkt super chill & easy!
+ zo'n bestand is met php ook nog makkelijk aan te maken!

solved

//EDIT2:
voor de geïnteresseerden, ik gebruik het nu zo:
  1. <?php
  2. if(is_file($dir.'/'.$photo.'.php'))
  3. {
  4. require_once($dir.'/'.$photo.'.php');
  5. $xml = new SimpleXMLElement($xmlstr);
  6. $tpl->assignGlobal('title', $xml->photo[0]->title);
  7. $tpl->assignGlobal('description', $xml->photo[0]->description);
  8. }
  9. else
  10. {
  11. $tpl->assignGlobal('title', $photo);
  12. $tpl->assignGlobal('description', '');
  13. }
  14. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s