Mailinglisten-Archive |
Hallo Norbert, > Wir nehmen mal ein konkretes Beispiel: > <? > $patter = '*orbert*ffer*'; > ?> > damit soll unter anderem > www.norbert-pfeiffer.de oder www.robert-schoeffer.com > gefunden werden. > Man muesste also die Sternchen gegen einen Ausdruck tauchen. > Vielleicht irgendwie so: > <? > $patter = '*orbert*ffer*'; > $ersatz = '[a-z0-9\-\_\.]'; > $suchen = '/^('.str_replace('*', $ersatz, $patter).')$/'; > if (preg_match($suchen, $domain) { > echo 'Treffer'; > } > ?> > Aber das bringt erst mal nix, da ist noch was flasch ... :-( Wenn du die Standard-Wildcards verwenden möchtest, müsstest du folgende Ersetzungen machen: ? -> [a-z0-9\-\_\.] * -> [a-z0-9\-\_\.]* (da liegt sicher dein Fehler) Ich hab dazu mal folgenden Test geschrieben: ----- $sSuche = 'Abrakadabra'; $arrPatterns = array('Abra?adabra','*abra*','abra', 'a?ka'); foreach ($arrPatterns as $sPrePattern) { $sPattern = str_replace('*', '[a-z0-9\-\_\.]*', $sPrePattern); $sPattern = str_replace('?', '[a-z0-9\-\_\.]', $sPattern); $sPattern = "~$sPattern~i"; echo "Suche von '$sPrePattern' in '$sSuche' ($sPattern). Treffer: "; if (preg_match($sPattern,$sSuche)) { echo "Ja<br>"; } else { echo "Nein<br>"; } } ----- Ausgabe: Suche von 'Abra?adabra' in 'Abrakadabra' (~Abra[a-z0-9\-\_\.]adabra~i). Treffer: Ja Suche von '*abra*' in 'Abrakadabra' (~[a-z0-9\-\_\.]*abra[a-z0-9\-\_\.]*~i). Treffer: Ja Suche von 'abra' in 'Abrakadabra' (~abra~i). Treffer: Ja Suche von 'a?ka' in 'Abrakadabra' (~a[a-z0-9\-\_\.]ka~i). Treffer: Nein So funktioniert es also jedenfalls... Grüße, Niels
php::bar PHP Wiki - Listenarchive