Also ich habe folgendes Problem:
In einem Text kann folgendes eingegeben werden:
[COLOR=tomato]<a href="url?parameter=value">Linktext (mit Klammern) und ?</a>[/COLOR]
Dieser Link soll durch einen Platzhalter ersetzt werden.
Platzhalter: <@n@> (n = irgendeine Zahl)
Der Link wird korrekt aus dem Text in ein Array geladen, und wird auch korrekt durch den Platzhalter ersetzt, solange er weder im Link noch im Linktext Fragezeichen oder Klammern enthält.
Ich bin noch nicht fit mit "regexp", darum poste ich hier.
Mein Problem: Vor dem Gebrauch der Variable für den Austausch muß in der Variable das "?" und die " ( ) " "escaped" werden.
Was für eine regexp brauche ich dafür um einen ereg_replace auf jeden möglichen eingegebenen Link zu erhalten? Es sollen einfach nur in der Variablen die Zeichen "[COLOR=tomato]?[/COLOR]" "[COLOR=tomato]([/COLOR]" "[COLOR=tomato])[/COLOR]" in "[COLOR=tomato]\?[/COLOR]" "[COLOR=tomato]\([/COLOR]" "[COLOR=tomato]\)[/COLOR]" umgeschrieben werden, so dass dann hinterher die Ersetzung des Links gegen den Platzhalter auch funktioniert, und nicht in einem Timeout Error endet.
Am besten wäre glaub ich eine regexp für dieses Problem, die alle Zeichen abfängt, die in URL´s und Linktexten vorkommen können, die PHP "nicht verträgt" wenn sie als Variable in einen Funktionsaufruf geraten ohne vorher escaped worden zu sein.
Kann mir einer helfen, in den regexp Dingen ein bischen fitter zu werden?
Bisheriger Code:
PHP-Code:
$pseudolink = substr($buffer, $posstart, $poslen); //zieht den Link aus dem Text
$plbuffer = ereg_replace("\\?", "\\?" ,$pseudolink); //die benötigte Umformung für Replace
$buffer = ereg_replace($pseudolink, $link, $buffer); //Replace für den Platzhalter
Kommentar