Avatar billede n-emy Nybegynder
29. november 2010 - 17:27 Der er 2 kommentarer og
1 løsning

Erstatte dele af string med funktion

Hej derude

Jeg sidder med et script der skal benyttes til såkaldte "tags" i min udskrift. Jeg vil gerne have at følgende script kan implementeres (en rss-læser):
$xml =  "denurlmanharindtastet";
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);


$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=4; $i++)
  {
  $item_title=$x->item($i)->getElementsByTagName('title')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_link=$x->item($i)->getElementsByTagName('link')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_title = utf8_decode($item_title);
  $rssprint = $rssprint."<a href=\"$item_link\">$item_title</a><br />";
  }

Ideen er at hvis man skriver [rss=url] skal den selv gå ind og skrive funktionen med den url på det sted, jeg har forsøgt mig med nogle forskellige ting bl.a.:


$xml = preg_replace('/\[rss=https?:\/\/([^]"]+?)\]/i', '$1', $textoutput);
if($xml <> NULL) {
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);


$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=4; $i++)
  {
  $item_title=$x->item($i)->getElementsByTagName('title')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_link=$x->item($i)->getElementsByTagName('link')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_title = utf8_decode($item_title);
  $rssprint = $rssprint."<a href=\"$item_link\">$item_title</a><br />";
  }

$textoutput = preg_replace('[rss=$xml]', "$rssprint", $textoutput);

}


Og en masse andre ting, men kan ikke hitte ud af det. Tænkte at man eventuelt kunne bruge preg_match, men har svært ved lige at forbinde prikkerne i hovedet =)
Avatar billede limemedia Nybegynder
04. december 2010 - 16:37 #1
Du bruger preg_replace forkert, den vil aldrig returnere det der er matchet i din regexp
Se evt http://ch2.php.net/preg_replace

Brug istedet preg_match til formaalet
Se evt http://ch2.php.net/manual/en/function.preg-match.php


Saa din kode skal starte noget ala (ikke testet)
<?php
  preg_match("/\[rss=([^\]]+)\]/", $textoutput, $matches);
  $xml = $matches[1];
  ....

Hvis altsaa jeg har forstaaet dig rigtigt ...
Avatar billede n-emy Nybegynder
21. december 2010 - 10:08 #2
Tak for hjælpen =) Svar?
Avatar billede limemedia Nybegynder
21. december 2010 - 10:13 #3
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester