Sarah: preg_replace Abfrage Problem

Ich möchte mit meiner Abfrage den direkten Link umändern und in den neuen Link in der Datenbank abspeichern.

Direkter Link: /doc/pfad1/pfad2/dokument.pdf

Jetzt soll "doc" durch "user1" ersetzt werden aber ich weiß nicht wie ich das hinbekomme?

Mit dem Script habe ich nun folgende Ausgabe:
src="/user1/dokument.pdf"

Möchte aber diese Ausgabe haben:
src="/user1/pfad1/pfad2/dokument.pdf"

Ich bin schon fast am verzweifelen und hoffe mir kann jemand helfen?

function Make_Replace_Image_Path($HTMLString, $New_Path) {

$new_path = "src="$New_Path\3";
   $pattern = '/(<a href=('|").*/(.*(.doc|.pdf)))/';

$Result_String = preg_replace($pattern, $new_path, $HTMLString);
       return($Result_String);

}

$HTMLString = '<a href="/doc/pfad1/pfad2/dokument.pdf" ';
$New_Path = '/user1/';

print Make_Replace_Image_Path($HTMLString, $New_Path)

  1. Hallo!

    Jetzt soll "doc" durch "user1" ersetzt werden aber ich weiß nicht wie ich das hinbekomme?

    Folgendes sollte ausreichen:

    echo preg_replace('/(/doc/)(.*.[a-z]{3})/', '/user1/$2', '/doc/pfad1/pfad2/dokument.pdf');

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!
    1. Hallo!

      Jetzt soll "doc" durch "user1" ersetzt werden aber ich weiß nicht wie ich das hinbekomme?

      Folgendes sollte ausreichen:

      echo preg_replace('/(/doc/)(.*.[a-z]{3})/', '/user1/$2', '/doc/pfad1/pfad2/dokument.pdf');

      André Laugks

      Hallo Andre!

      Du bist echt ein Schatz!

      Jetzt habe ich noch ein Problem ich brauche nur den Pfad des Links:
      <a href="http://localhost/test1/beta/test.pdf">test.pdf</a>

      Als Eregbnis soll folgendes ausgegeben werden:
      http://localhost/test1/beta/test.pdf

      Gruß Sarah

      1. Liebe Sarah,

        Jetzt habe ich noch ein Problem ich brauche nur den Pfad des Links:

        das sollte ganz einfach gehen.

        <a href="http://localhost/test1/beta/test.pdf">test.pdf</a>

        Als Eregbnis soll folgendes ausgegeben werden:
        http://localhost/test1/beta/test.pdf

        $erfolgreich = preg_match('/<a[^>]*href=["\']([^"\']*)["\']/', $linkPfade); // ungetestet!

        Lernst Du eigentlich etwas dabei, wenn wir Dir hier die regulären Ausdrücke fertig liefern...?

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hallo Felix.

          $erfolgreich = preg_match('/<a[^>]*href=["\']([^"\']*)["\']/', $linkPfade); // ungetestet!

          Dann teste doch.

          Lernst Du eigentlich etwas dabei, wenn wir Dir hier die regulären Ausdrücke fertig liefern...?

          Das bezweifle ich.
          Ohne das Wissen über die Bedeutung der einzelnen Zeichen sind RegExp nicht mehr als Hieroglyphen.

          Einen schönen Dienstag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          mathbr:del.icio.us/ mathbr:w00t/
          1. Ohne das Wissen über die Bedeutung der einzelnen Zeichen sind RegExp nicht mehr als Hieroglyphen.

            Stimmt woher soll ich wissen was das bedeutet php.net hilft hier auch nicht

            1. Liebe Sarah,

              Ohne das Wissen über die Bedeutung der einzelnen Zeichen sind RegExp nicht mehr als Hieroglyphen.
              Stimmt woher soll ich wissen was das bedeutet php.net hilft hier auch nicht

              ich habe RegExe in einem englisch-sprachigen Tutorial über regular expressions gelernt. Auch wenn Ashura zum Teil recht hat und mein Hinweis hätte lauten müssen "Sarah schaue im Array $linkPfade[1] nach!", denn die Funktion speichert den Treffer, der auf das _ganze_ Suchmuster passt in $linkPfade[0], den Teilausdruck in Klammern in das (Unter-)Array $linkPfade[1]. Hätten wir jetzt noch eine zweite Klammer nach der meinen gesetzt, dann würde dieser gematchte Teilausdruck in (na, rate mal!) $linkPfade[2] stehen.

              Also Sarah, frisch auf ans Werk! Wenn es jetzt mehrere Treffer gibt, dann musst Du halt jedes Element des Arrays $linkPfade[1] verarbeiten.

              Lerne Reguläre Ausdrücke!!! Es ist ein soooooo mächtiges Werkzeug! Ich habe schon viele Sachen damit gemacht, die ohne diese Ausdrücke mehrere Zeilen umständlichsten Code benötigt hätten! Und das Tutorial ist wirklich sehr gut verständlich. Mit anschließender weiterer Hilfe hier im Forum sollten dann die ersten Gehversuche mit diesem wundervollen Werkzeug immer mehr Spaß machen. Übrigens habe ich nach dem Studium dieses Tutorials auch ersteinmal hier Hilfe gebraucht, um das Neugelernte umzusetzen.

              Liebe Grüße aus Ellwangen,

              Felix Riesterer.

  2. Hallo Sarah.

    Mit dem Script habe ich nun folgende Ausgabe:
    src="/user1/dokument.pdf"

    Möchte aber diese Ausgabe haben:
    src="/user1/pfad1/pfad2/dokument.pdf"

    Dafür ist kein regulärer Ausdruck erforderlich.

    Obige Modifikation kannst du ganz leicht mittels str_replace() vornehmen.

    Einen schönen Dienstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/
    1. Hallo Sarah.

      Mit dem Script habe ich nun folgende Ausgabe:
      src="/user1/dokument.pdf"

      Möchte aber diese Ausgabe haben:
      src="/user1/pfad1/pfad2/dokument.pdf"

      Dafür ist kein regulärer Ausdruck erforderlich.

      Das stimmt nicht! Der Pfad sieht ja nicht jedesmal gleich aus!