Klik hier om terug te keren naar de normale stijl.

Scholieren.com forum Mobiel
[Naar beneden]
dafelix 10:32 15-11-2004
Oi vriendjes


ik zit op het moment nog steeds te klooien met PHP, en begin ook dingen als regular expressions onder de knie te krijgen, maar er is iets wat me bugt

Code:
preg_replace("#ed2k://\|file\|(.*)\|\d+\|\w+\|/?#",
"eD2k: <a href=\"\\0\">" .
str_replace("%20", " ", "\\1") . "</a><br/>", $body);
Deze expressie zet een eD2k-link om naar een A-href. Een eD2k link ziet er zo uit:

Code:
ed2k://|file|Bestandsnaam%20plus.ext|112|fcd4d8007f5a1163130580e5bed242cd|/
Nu zet de expressie hem goed om, maar ik wil dat de '%20' wordt vervangen door een spatie, maar de replace functie voert het uit over het woord '\\1', in plaats van de gevonden expressie.
Hoe kan ik ervoor zorgen dat hij hem wel goed omzet? Ik kan later wel de replace functie uitvoeren, maar dan wordt in de link zelf de '%20' ook vervangen, dat wil ik dus weer niet


Alle hulp is welkom
[Reageren]
dafelix 10:51 15-11-2004
Hm, een oplossing die niet voor de hand lag, maar wel werkt:

Code:
function ad ($body) {
  $body = preg_replace_callback(
  "#ed2k://\|file\|(.*)\|\d+\|\w+\|/?#",
  "gad",
  $body);
  return $body;
}

function gad ($match) {
  $return = "eD2k: <a href=\"" . $match[0] . "\">" .
  str_replace("%20", " ", $match[1]) . "</a><br/>";
  return $return;
}

ik hou me open voor ander suggesties natuurlijk, maar in eerste instantie is het 'probleem' opgelost
[Reageren]
JelmerBarhorst 19:58 15-11-2004
urldecode($match[1])

Dit zorgt er voor dat dingen als %20 als normale tekens worden omgzet.
[Reageren]
Up