im Kommentarbereich auf einer Website. Zuerst brauchte ich einen regulären Ausdruck zu tun, dass jede URL findet, und ersetzen Sie es mitUrl Regex für preg_replace, aber ohne die URLs innerhalb der BBCode [url]
umgeben<a href="url"></a>
So fand ich einen Super regulären Ausdruck alle URLs in einem Kommentar zu finden, und ich habe eine Funktion, die alle kehrt die URLs mit dem HTML-Tag:
function addURLTags($string) {
$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";
return preg_replace($pattern, '<a href="$1">$1</a>', $string);
}
Alles ging ausgezeichnet. Aber vor einer Woche hat mir mein Chef gesagt, dass ich jetzt BBCode in den Kommentarbereich einfügen muss. Und ich war wie "kein Problem" ... aber dann hat er mir gesagt, dass meine Funktion addURLTags bleiben soll.
So eine Zeichenfolge wie folgt:
http://www.google.com
[url]http://www.google.com[/url]
[url="http://www.google.com"]http://www.google.com[/url]
müssen auf die gleiche Zeichenfolge ersetzt werden:
<a href="http://www.google.com">http://www.google.com</a>
Also habe ich ein wenig PHP-Bibliothek, die alle bbcode ocurrences zu HTML-Code ersetzt.
Und ich dachte: „Ok, erste sollte ich alle url ocurrences erhalten, die keine [url] Tag in beggining tun und zweite ersetze ich alle bbcode Tags“
Und ich versuchte, Fügen Sie am Anfang der Superregex eine negative Assertion hinzu:
/(? i) \ b ((?! [url]) (?: https?: // | www \ d {0, 3} [.] | [A-z0-9 .-] + [.] [Az] {2,4} /) (?: [^ \ S() <>] + | (([^ \ s () <>] + | (([^ \ s() <>] +))) )) + (?: ([^ \ S() <>] + | (([^ \ s() < >] +)))) | [^ \ s`!]() [] {};: '\ "., <>?« »" "' '']))/
aber hat nicht funktioniert!
Ich bin irgendwie Neuling mit regulären Ausdrücken und alle Online-Tester, die ich versuchte, funktionieren nicht gut mit so einem langen Regex. Ich weiß nicht, was ich noch versuchen soll.
Haben Sie Vorschläge? Kennen Sie irgendeine PHP-Bibliothek, die die "URL-Ersetzung" mit und ohne die [url] bbcode-Tags durchführt?
Vielen Dank im Voraus.
Ich konzentrierte mich so sehr auf meine Art, dass ich die ganzen Möglichkeiten nicht sehen konnte. Ich habe die Kommentarzeichenfolge aufgeteilt und alle Zeichenfolgen des BBCode gespeichert. dann sende ich alle diese an die bbcodelibrary. Der Rest der Saiten funktionierte ok mit dem Super Regex. perfekt. ich danke dir sehr! –