Regexp für eine Ersetzung !?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regexp für eine Ersetzung !?



    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 
    So wie es hier steht funktioniert es schon, soll nur erweitert werden, das halt alle Zeichen abgefangen werden die abgefangen werden müssen, damit der Replace für den Platzhalter auch funktioniert. Dafür brauch ich die regexp.
    Zuletzt geändert von Fragmashine; 26.06.2004, 07:42.
    Man weiß nie was einem der tag bringt, bevor er zu ende ist! Und dann weiß man nur, was er einem gebracht hat...

  • #2
    Re: Regexp für Replace !?

    Mein Problem: Vor dem Gebrauch der Variable für den Austausch muß in der Variable das "?" und die " ( ) " "escaped" werden.
    http://www.php-resource.de/manual.ph...tion.quotemeta
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Prima! Danke! Werd ich mal probieren!
      Man weiß nie was einem der tag bringt, bevor er zu ende ist! Und dann weiß man nur, was er einem gebracht hat...

      Kommentar

      Lädt...
      X