PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Substrings in Subdomains


heermann
04.07.2008, 16:59
Tach,

für folgenden Fall habe ich bisher nur einen Ansatz gefunden, der aber nicht hinreichend funktioniert. Ich würde gerne urls die einen bestimmten Substring "test" in der Subdomain enthalten rausfiltern.

Folgenden Regex hatte ich entwickelt:

.*?(?<!test)\.meinedomain.de.*

dieser bewirkt das Ziel ja aber nur, wenn die Sequenz "test" direkt vor der Domain steht also beispielsweise bei:

http://fritztest.meinedomain.de/pfad.html
den Link

http://fritztestfranz.meinedomain.de/pfad.html
würde er beispielsweise nicht mehr matchen. Habt ihr ein Lösung, die den gewünschten Substring (also wie oben "test") irgendwo in der Subdomain matcht ?

Lösungsvorschäge, Tipps etc. wären super nett.

Gruß

Poc


butterkeks
04.07.2008, 17:46
so?
.*?test.*?\.meinedomain\.de.*

das matcht den kompletten URL

heermann
04.07.2008, 18:29
Sorry...
Ich hatte mich falsch ausgedrückt. Ich brauche einen Regex. der die Url bei Vorkommen des Substrings 'test' irgendwo in der Subdomain negiert(!) ...
any idea ...
Dank Dir für Feed Back!

Crusade
10.07.2008, 21:39
Kommt halt drauf an, wie du Dir die Ausgabe vorstellst

<?php
$subject = 'http://fritztest.meinedomain.de/pfad.html';
$pattern = '#(test)(?=.*?\..+?\.de)#is';
$replace = '<negiert>\1</negiert>';
$result = preg_replace($pattern, $replace, $subject);

// http://fritz<negiert>test</negiert>.meinedomain.de/pfad.html
?>

oder

<?php
$subject = 'http://fritztest.meinedomain.de/pfad.html';
$pattern = '#(http:\/\/|w{2,3}).*?test[^.]*\.(?!\.de)#is';
$result = preg_match($pattern, $subject, $subpattern);

// True
?>

Firefall
11.07.2008, 00:07
Wie willst du eine URL negieren?! Ne Not-Operation damit durchführen? :D