Antworten auf deine Fragen:
Neues Thema erstellen

Regex Leerzeichen

Refus

aka Noisy

Ich hab hier ein Regex welches URLs erkenne soll.

PHP:
$text = preg_replace_callback('#(( |^)(((ftp|https|http|)://)|www\..)\S+)#mi', 'linkLenght', $text);

Wenn man aktuell mit www. beginnt und dann ein Leerzeichen macht wird das nächste Wort noch mit in die angebliche ULR genommen, allerdings möchte ich, dass es nachdem leerzeichen abbricht bzw. das ganze nicht als URL gezählt wird.

Hab es mit ^[:space:] in in alle mögliche Kombinationen versucht, allerdings funktioniert dann gar nichts mehr und $text ist am Ende leer. Kann mir jemand sagen wie ich also Leerzeichen in . ausschließe? Danke.
 

Duddle

Posting-Frequenz: 14µHz

AW: Regex Leerzeichen

Wenn ich deinen Ausdruck bei RegexPal eingebe, erkennt er alles bis exklusive dem Leerzeichen als Treffer. Vielleicht habe ich dich nicht richtig verstanden, aber für mich sieht das für deine Anforderungen korrekt aus.

Ansonsten könntest du mglw. mal ein paar Testfälle und Codeausschnitte nennen, damit man das Problem nachvollziehen kann.


Duddle
 

Duddle

Posting-Frequenz: 14µHz

AW: Regex Leerzeichen

Ahja, verstehe. Problem erkannt, Problem gebannt!
alt:
PHP:
 $text = preg_replace_callback('#(( |^)(((ftp|https|http|)://)|www\..)\S+)#mi', 'linkLenght', $text);

neu:
PHP:
 $text = preg_replace_callback('#(( |^)(((ftp|https|http|)://)|www\.)\S+)#mi', 'linkLenght', $text);

Hinter dem www\. ist noch ein . der für alle möglichen Zeichen, also auch Leerzeichen u.a., stehen kann.


Duddle
 

Doitsu

Aktives Mitglied

AW: Regex Leerzeichen

Nur mal kleine Frage dazu:
Du verwendest ewig viele Klammern & so, brauchst du die ueberhaupt alle?
Ich meine sowas duerfte doch vollkommen reichen:
PHP:
$text = ' www.example.tld hi';
preg_replace_callback('#(?: |^)((?:f|ht)tps?://|www\.)\S+#mi', 'linkLenght', $text);
# array(2) { [0]=> string(16) " www.example.tld" [1]=> string(4) "www." }

$text = 'http://www.example.tld hi';
preg_replace_callback('#(?: |^)((?:f|ht)tps?://|www\.)\S+#mi', 'linkLenght', $text);
# array(2) { [0]=> string(22) "http://www.example.tld" [1]=> string(7) "http://" }

$text = ' http:// hi';
preg_replace_callback('#(?: |^)((?:f|ht)tps?://|www\.)\S+#mi', 'linkLenght', $text);
# nicht ausgefuehrt

$text = 'www. hi';
preg_replace_callback('#(?: |^)((?:f|ht)tps?://|www\.)\S+#mi', 'linkLenght', $text);
# nicht ausgefuehrt
Was mir gerade auffaellt: in beiden Faellen wird http://www. gematcht - am bestend du suchst gleich nach kompletten Domains, nicht nur nach den Anfang ..
http://regexlib.com/DisplayPatterns.aspx?cattabindex=1&categoryId=2
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben