Stefan Wagner: eregi_replace und merkwürdiger Fehler

Hallo,

ich habe ein Problem mit folgendem Code-Teil:

------
if (isset($detail)) {
 $events = file_get_contents("http://www.evangelische-termine.de/Veranstalter/detail.php?ID=".$EVENTID."&vid=".$VERANSTALTER."&sidv=".$sidv);
 //Session entfernen
 $events = eregi_replace("sidv=[a-zA-Z0-9]{32}",'id='.$id.'&VERANSTALTER='.$VERANSTALTER.'&PEOPLE='.$PEOPLE.'&itemsPerPage='.$itemsPerPage.'&month='.$month.'&EVENTTYPE='. $EVENTTYPE ."highlighrr", $events);
}
-------

Das funktioniert soweit. Wenn ich jetzt im Ersetzen-Teil (also dem
zweiten) von eregi_replace bei dem "highlighrr" noch irgendetwas
anhänge (z.B. ein "r": "highlighrrr") dann bekomme ich einen

Parse error: parse error, unexpected $ in /home/.../fileadmin/veranstaltungen.inc on line 284

Und das immer wenn ich die Länge des Ersetzen-Teils auf über 148
Zeichen bringe.

PHP-Version ist 5.0.3

Irgendwelche Ideen? Schon mal vielen Dank!
 Ciao!
  Stefan

  1. Hallo,
    soweit ich weiß(und ich weiß nicht viel), sind ersteinmal die preg funktionen den ereg´s vorzuziehen, sollen wohl performance-mäßig besser sein also verwende doch einfach mal preg_replace und schau dann nochmal ob der fehler weiter besteht... deinen code hab ich mir jetzt gar net so genau angeguckt(liegt wohl an den 6 caipis*GGG*)

    MFG Hagen

    1. Ich grüsse den Cosmos,

      sind ersteinmal die preg funktionen den ereg´s vorzuziehen, sollen wohl performance-mäßig besser sein

      Nein, da muss ich widersprechen. preg_* arbeitet mit RegExp, welche zu parsen wesentlich länger dsauert, als eine einfache Ersetzung einer Zeichenkette.

      Möge das "Self" mit euch sein

      --
      Ich bin keine Signatur, ich fülle nur diesen leeren Platz mit sinnlosen Worten
  2. Ich grüsse den Cosmos,

    eregi_replace("sidv=[a-zA-Z0-9]{32}"

    Naja, da laut Doku ereg* keine regulären Audrücke kann, wird das nie funktionieren.

    Möge das "Self" mit euch sein

    --
    Ich bin keine Signatur, ich fülle nur diesen leeren Platz mit sinnlosen Worten
    1. Ich grüsse den Cosmos,

      Sorry, hab ich mich vertan. Bitte mein Posting ignorieren. /Das kommt davon, wenn ich erst poste und dann in die Doku schau ~grummel~)

      Möge das "Self" mit euch sein

      --
      Ich bin keine Signatur, ich fülle nur diesen leeren Platz mit sinnlosen Worten
  3. echo $begrüßung;

    ich habe ein Problem mit folgendem Code-Teil:

    [...]

    Das funktioniert soweit. Wenn ich jetzt im Ersetzen-Teil (also dem zweiten) von eregi_replace bei dem "highlighrr" noch irgendetwas anhänge (z.B. ein "r": "highlighrrr") dann bekomme ich einen
    Parse error: parse error, unexpected $ in /home/.../fileadmin/veranstaltungen.inc on line 284

    Ich kann diesen Fehler nicht nachvollziehen. Die Ursache für einen parse error liegt in vielen Fällen vor der bemängelten Stelle, vielleicht außerhalb des von dir geposteten Codes. Wenn du keinen Editor mit Syntaxhighlighting verwendest, der dir einen Fehler eventuell verdeutlichen würde, kannst du den Fehler einkreisen, indem du stückweise Programmteile auskommentierst. Tritt der Fehler nicht mehr auf, ist er meist im auskommentierten Teil zu finden.

    echo "$verabschiedung $name";

    1. Hi,

      Ich kann diesen Fehler nicht nachvollziehen. Die Ursache für einen parse error liegt in vielen Fällen vor der bemängelten Stelle, vielleicht außerhalb des von dir geposteten Codes.

      Wenn du keinen Editor mit Syntaxhighlighting verwendest, der dir einen Fehler eventuell verdeutlichen würde,

      Hab ich eigentlich, er hilft mir nur auch nicht weiter...

      kannst du den Fehler einkreisen, indem du stückweise Programmteile auskommentierst. Tritt der Fehler nicht mehr auf, ist er meist im auskommentierten Teil zu finden.

      Das habe ich gemacht, der Fehler steckt genau in dem Code Teil. Noch genauer hier:

      --------
       $events = eregi_replace("sidv=[a-zA-Z0-9]{32}",'id='.$id.'&VERANSTALTER='.$VERANSTALTER.'&PEOPLE='.$PEOPLE.'&itemsPerPage='.$itemsPerPage.'&month='.$month.'&EVENTTYPE='.$EVENTTYPE, $events);
       //.'&HIGHLIGHT='.$HIGHLIGHT.'&q='.$q.'&d='.$datum.'&pageID='.$pageID
      ---------

      Eigentlich soll das im Kommentar ans Ende des Ersetzen Ausdrucks. Produziert auch den Fehler. Der selbe Fehler wird auch generiert, wenn ich das ganze wie oben benutze (mit dem Kommentar). Nur wenn ich die Kommentarzeile ganz lösche bringt es keinen Fehler? ? ?

      Nochmal der ganze Code:
      --------
      //?
      if(isset($sidv)) {
       $str .= "&sidv=".$sidv;
      }

      // Wenn die Detailseite angezeigt werden soll wird das hier erledigt
      if (isset($detail)) {
       $events = file_get_contents("http://www.evangelische-termine.de/Veranstalter/detail.php?ID=".$EVENTID."&vid=".$VERANSTALTER."&sidv=".$sidv);
       //Session entfernen
       $events = eregi_replace("sidv=[a-zA-Z0-9]{32}",'id='.$id.'&VERANSTALTER='.$VERANSTALTER.'&PEOPLE='.$PEOPLE.'&itemsPerPage='.$itemsPerPage.'&month='.$month.'&EVENTTYPE='. $EVENTTYPE, $events);
       //.'&HIGHLIGHT='.$HIGHLIGHT.'&q='.$q.'&d='.$datum.'&pageID='.$pageID
      //Rest ist für die Übersichtsseite zuständig.
      } else {
      ...
      ----------

      Ciao!
        Stefan

      1. echo $begrüßung;

        der Fehler steckt genau in dem Code Teil. Noch genauer hier:

        $events = eregi_replace("sidv=[a-zA-Z0-9]{32}",'id='.$id.'&VERANSTALTER='.$VERANSTALTER.'&PEOPLE='.$PEOPLE.'&itemsPerPage='.$itemsPerPage.'&month='.$month.'&EVENTTYPE='.$EVENTTYPE, $events);
        //.'&HIGHLIGHT='.$HIGHLIGHT.'&q='.$q.'&d='.$datum.'&pageID='.$pageID

        Tut mir leid, kann ich immmer noch nicht nachvollziehen. Tritt denn der Fehler auch dann auf, wenn du mal nur die eine Zeile in eine eigenen Datei kopierst und diese Datei ausführst? (Die Variablen sind dann zwar nicht initialisiert, doch das ist bei der Suche nach einem parse error nicht weiter tragisch.)

        echo "$verabschiedung $name";