Problem mit Reg. Exp

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

  • Problem mit Reg. Exp

    Hallo Leute,
    Ich hab nen string, der [titel=wert]
    enthält.

    und diesen Teil will ich durch z.B.
    getdesc(wert); ersetzen - also durch den Rückgabewert der Funktion getdesc von wert.

    Dazu habe ich
    $searcharray[]="/[titel=([^\"]*)\]/siU";
    $replacearray[]=getdesc("$1","titel");
    $site = preg_replace($searcharray, $replacearray, $site);

    versucht. $1 wird auch an getdesc() übergeben, doch irgendwie funzt die Routine trotzdem net.

    function getdesc($site_id) {
    global $db_zugriff;
    $result = $db_zugriff->query_first("SELECT field FROM sites WHERE site_id='$site_id'");
    return $result[field];
    }

    die Query, die gesendet wird, sieht dann aber so aus... Select ... site_id='$1';
    es wird also nicht $1 durch wert ersetzt sondern es bleibt einfach so.

    Wenn ich allerdings nur
    return "Desc($site_id)"; zurückgebe, wird daraus
    Desc(1).
    Wenn ich allerdings.
    $foo = "Desc($site_id)";
    return $foo; mache,
    wird Desc($1) zurückgegeben.

    Ich kann $site_id also nicht richtig verwenden.
    Weiß jemand Rat ?


    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

  • #2
    Probiers mit der alternativen Syntax:

    $replacearray[]=getdesc("\\1","titel");

    CAT Music Files

    Kommentar


    • #3
      Sorry, geht auch net.
      Ich dachte, \\n oder $n wären equivalent.
      Ausserdem wird nun in der Query site_id='\1' genommen.

      Geht auch net :-(

      [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
      [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
      [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

      © Harald Schmidt

      Kommentar


      • #4
        ok dann: $replacearray[]=getdesc('$1',"titel");

        CAT Music Files

        Kommentar


        • #5
          Also, das hab ich schon alles probiert. Mit, ohne...

          Vielleicht liegts ja am Suchpattern und den Modifiern ?
          also da hab ich nicht soo viel Ahnung von. In Perl ist das sooo viel einfacher.
          Auch mit e (der ja angeblich dafür sorgt, dass das ganze als Code angenommen wird, bringt nichts..

          wie würdest du denn das ganze machen ? Vielleicht ne andere Lösung.

          Ach so: Ich teste das ganze unter Windows mit Apache und PHP

          [Editiert von André-Nam am 18-12-2001 um 23:42]
          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

          © Harald Schmidt

          Kommentar


          • #6
            Ich würde zuerst den Wert holen, den an die Funktion übergeben und dann das ganze durch den Rückgabewert der Funktion ersetzen.

            CAT Music Files

            Kommentar


            • #7
              Ich habs mal so gelöst:
              Code:
              $fields = array("titel","short_desc");
              
              for($e=0;$e<count($fields);$e++) {
              $field = $fields[$e];
              $anz_treffer = preg_match_all("|\[$field\](.+)\[\/$field\]|siU",$site,$exp);
              for($i=0;$i<$anz_treffer;$i++) {
              $var = $exp[1][$i];
              $searcharray[]="/\[$field\]$var\[\/$field\]/siU";	
              $replacearray[] = getdesc($var,$field); }
              
              $site = preg_replace($searcharray, $replacearray, $site);
              
              }
              [Editiert von André-Nam am 19-12-2001 um 14:24]
              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

              © Harald Schmidt

              Kommentar

              Lädt...
              X