Vraag & Antwoord

Webprogrammeren & scripting

[php]str_replace niet uitvoeren binnen [code]-tag

2 antwoorden
  • Heb de volgende code om [dvd]-links naar bol.com te maken (resultaat zie [url=http://www.swordfactsbenelux.nl/forums/viewtopic.php?f=1&t=1007]hier[/url], ben het ook aan het implementeren op een Invision-forum, werkt grotendeels hetzelfde en heb zelfde bug). [code:1:0c1fc19bfe]//Start dvd //Hebben we DVD's? preg_match_all('#\[dvd\](\d+)\[/dvd\]#',$txt, $matchees ); foreach ($matchees as $eanin){} unset($matchees); //Treedt toe tot de wondere wereld van Bol foreach ($eanin as $ean) { $data = implode("",@file("http://www.nl.bol.com/is-bin/INTERSHOP.enfinity/eCS/Store/nl/-/EUR/BOL_AffiliateMap-Start?LinkType=Search&Section=VIDEO&QueryType=EAN&SearchText=$ean%22&Referrer=TDRc93afb4f79de3042cb1d8bfe8e5055b71506965")); preg_match('#BOL_OWNER_ID=([0-9]+)&Section=VIDEO#',$data,$matchees); $prdId = $matchees[1]; $aantal=count($matchees[1]); if ($aantal==0) { $txt = str_replace($ean, "[EAN $ean onbekend]", $txt); $txt = str_ireplace("[/dvd]", "", $txt); $txt= str_ireplace("[dvd]", "", $txt); } else { unset($matchees); //titelramp... preg_match('#Section=1"\>(.+)\<\/a\>\<\/b\>\<\/font\>\<br\>#sx',$data,$matchees); $predvd = $matchees[1]; unset($matchees); preg_match ('#Section=1"\>(.+)#xs', $predvd, $matchees); $dvd = $matchees[1]; unset($matchees); //regiseur preg_match('#BOL_ARTIST_ID=1"\>(.*?)\<\/font\>\<\/a\>\<\/font\> \|#s',$data,$matchees); $regis = $matchees[1]; unset($matchees); //gaat heen en creëert eenen cover $coverPath = ""; for ($map=0; $map<5; $map++) $coverPath .= $ean[$map].'/'; //En we maken er wat moois van $txt = str_replace($ean, " <!--start dvdlink--><a href=\"http://clk.tradedoubler.com/click?a=$bfMid&p=$siteId&g=$sectionIddvd&epi=$prdId\" title=\"Bestel via deze link en steun Wetenschapsforum\" alt=\"$dvd\" target=\"_blank\"><img src=\"http://img.bol.com/intershoproot/VIDEOCOVER/FC/$coverPath$ean.gif\" alt=\"$dvd\" border=\"0\"><br />$dvd<br />$regis</a><!--einde dvdlink-->", $txt); $txt = str_ireplace("[/dvd]", "", $txt); $txt = str_ireplace("[dvd]", "", $txt); } }[/code:1:0c1fc19bfe] Ik zit nu met 1 bug: binnen [code]-tags hoort dit genegeerd te worden. Gebeurt ook, maar [u:0c1fc19bfe]niet[/u:0c1fc19bfe] als [i:0c1fc19bfe]binnen 1 bericht[/i:0c1fc19bfe] zowel binnen [code]-blokken als daarbuiten [i:0c1fc19bfe]dezelfde[/i:0c1fc19bfe] EAN-code tussen dvd-tags wordt ingevuld. Zijn die twee verschillend, gaat het wel goed. Ik gok haast dat het door de str_replace op het eind komt, dat die [i:0c1fc19bfe]alles[/i:0c1fc19bfe] vervangt als het gevonden wordt buiten code-tags. Waarschijnlijk zit er dus een foutje in de loop, maar ik zie niet waar. Ben al zó ver gekomen, zou zonde zijn als het hierop afknapt. Iemand die de fout wel ziet misschien?
  • En als je het laatste stukje vervangt door dit? [code:1:83dca6c57e] //En we maken er wat moois van str_ireplace("[dvd]$ean[/dvd]", " <!--start dvdlink--><a href=\"http://clk.tradedoubler.com/click?a=$bfMid&p=$siteId&g=$sectionIddvd&epi=$prdId\" title=\"Bestel via deze link en steun Wetenschapsforum\" alt=\"$dvd\" target=\"_blank\"><img src=\"http://img.bol.com/intershoproot/VIDEOCOVER/FC/$coverPath$ean.gif\" alt=\"$dvd\" border=\"0\"><br />$dvd<br />$regis</a><!--einde dvdlink-->"); [/code:1:83dca6c57e] Ik heb er alleen even snel doorheen gelezen en niets getest.. Ik ga ervan uit dat je de [dvd] en [/dvd] tags reeds eerder heb omgezet naar html code bij het afvangen van de [code] tag. Good luck EDIT: Na het nogmaals doorlezen van je post vermoed ik dat je met je probleem iets anders bedoelde dan wat ik zojuist heb gedaan. Volgens mij moet je bij het afvangen van de [code] tag de [ en ] vervangen door html codes ([ en ] respectievelijk). Dit dient te gebeuren voordat de [dvd] code wordt afgevangen. Op die manier wordt deze eerst omgezet naar html en zal deze gewoon letterlijk in het code blok komen te staan. Bij het checken op [dvd] zal deze niet meer afgevangen worden omdat er inmiddels [dvd] staat. Hopelijk heb je er wat aan :)

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.