Refferer zerlegen mit preg_replace

Ansgar Berhorn

Angesehenes Mitglied
Folgende Funktion:
CODE
function cleanReferrerString ($text)
{
$suchmuster="/.+(google)\.(\w{0,6})\/search.*q=([^&]*).*/";
$ersetzung="$1.$2-Suche:$3";
return(preg_replace($suchmuster,$ersetzung, $text));
};


Funktioniert wunderbar für Links nach dem Schema:
http://www.google.ch/search?hl=de&q=Suchwort

Wenn der "q"-Parameter direkt hinter dem "search?" kommt, geht es nicht.
Folgende Links matchen nicht:
http://www.google.ch/search?q=Suchwort

Kann mir jemand sagen, wo der Fehler in meinem regulärem Ausdruck ist?
 
hallo ansgar

CODE <?php

function cleanReferrerString($text) {
$suchmuster="/.+(google)\.(\w{0,6})\/search.*q=([^&]*).*/";
$ersetzung="$1.$2-Suche:$3";

return(preg_replace($suchmuster,$ersetzung, $text));
}

echo "<pre>";
print_r(cleanReferrerString("http://www.google.ch/search?hl=de&q=Suchwort"));
echo "\n";
print_r(cleanReferrerString("http://www.google.ch/search?q=Suchwort"));
echo "</pre>";

?>


gibt bei mir


CODE google.ch-Suche:Suchwort
google.ch-Suche:Suchwort


aus. ist das nicht das, was du wolltest?
 
QUOTE ist das nicht das, was du wolltest?

Ja, das ist es. Ich habe einen Fehler beim testen gemacht.

Hier die ganze Funktion:

CODE
function cleanReferrerString ($text)
{
$suchmuster[0]="/.+(google)\.(\w{0,3})\/search\?.*q=([^&]*).*/";
$suchmuster[1]="/.+(search\.msn)\.(\w{0,3})\/results\.aspx\?.*q=([^&]*).*/";
$suchmuster[2]="/.+\/\/(\w{0,2}\.)?(search\.yahoo\.com)\/search\?.*p=([^&]*).*/";

$ersetzung[0]="$1.$2-Suche:$3";
$ersetzung[1]="$1.$2-Suche:$3";
$ersetzung[2]="$1$2-Suche:$3";
return(urldecode(preg_replace($suchmuster,$ersetzung, $text)));
};

Wer will, kann es gebrauchen.
 
ach mein lieber, und ich hacke das zeugs lokal auf meine festplatte...
wink.gif
 
Zurück
Oben