Zeichen aufspüren und verändern [PHP]

  • Hi Leuts

    Ich hab da ne ganz komplizierte PHP Frage, von mir aus gesehen, zumindest. ;)

    Ich habe einen grossen String mit unbestimmtem Inhalt und Grösse.
    Daraus möchte ich etwas herausfiltern und zwar z. B. zwischen zwei Strings "#anfang#" und "!fertig#" möchte ich die Zeichen haben.
    Diese Zeichen möchte ich dann verändern, indem ich etwas davor stelle und das Ding dann wieder verändere und ausgebe.

    In etwa so:

    • String, den ich habe:
      Zitat

      asodifu dfkaujsdof kj o fsf #anfang#difuo dfdfkji!fertig# kasdfjlskdf

    • Folgendes möchte ich herausfiltern:
      Zitat

      difuo dfdfkji

    • Davor etwas hinzufügen:
      Zitat

      abcd_difuo dfdfkji

    • Und am Schluss den String so wiedergeben:
      Zitat

      asodifu dfkaujsdof kj o fsf #anfang#abcd_difuo dfdfkji!fertig# kasdfjlskdf



    Das wiederum möchte ich ein paar mal machen, jedes Mal stehen die undefinierten Zeichen IMMER in den "#" (Rauten).

    Wer hat mir einen Lösungsansatz (keine Lösung oder Script, vllt Funktionen oder Ideen), um die aufzuspüren und zu verändern und dann wieder auszugeben?

    Ich hoffe, jemand kann helfen, danke im Voraus

    MFG FF5.0

  • schaumal ob dir die 2 funktionen helfen

    strpos
    substr

    mit strpos kannst die position des # ermitten.
    mit substring dann den wert von zeichen x bis y rausholen.
    (evlt in 3 variablen - davor, danach und die mitte)

    anschließend den wert aus 3 hinzufügen und die 3 wieder zusammenfügen...

    :|

  • Ich möchte nicht nur ein einzelnes Zeichen und einmal im String suchen, sondern gleich einige viele.

    So habe ich es mal ausprobiert und es findet halt einfach das erste Vorkommen und mehr nicht.
    Aber was mir ein Rätsel ist, wie füge ich die Dinger zusammen?

    Ich habe da noch was von preg_match() gesehen, was wäre denn damit?

    Also was ich möchte in Klartext:

    Ich habe einen HTML Code in einem String.
    Da möchte ich das Vorkommen von Links aufspüren und alle <a href=" Links ein klein wenig abändern und die Links stehen ja zwischen <a href=" und ".

    Ich finde zwar, wo das Ding anfängt, aber ich hab grad keine Ahnung, wie das Ding als String (also die URL) bekommen kann.

    :S Die erste Position finde ich aber mehr leider nicht.

  • Ja klar, doch im HTML Code hats sehr viele Anführungszeichen, die für Links gebraucht werden.

    Theoretisch müsste ich suchen: <a href=" oder auch <a xyzxyz href="
    und dann das Ende wäre: " <= kommt aber zu tausenden vor..

    Gibts da noch ne andere Möglichkeit über preg_match? Das gibt ja auch etwas zurück, was ich vorher definiert habe...

  • PHP
    <?
    $inhalt = "asodifu dfkaujsdof kj o fsf #anfang#test_text!fertig# kasdfjlskdf";
    
    
    echo preg_replace('/#anfang#(.*?)!fertig#/', "_blub_\1", $inhalt);
    
    
    ?>

    hier ein Lösungsansatz...
    und noch ein paar Links:

    http://php.net/manual/de/function.preg-replace.php
    http://www.php.net/manual/de/function.preg-match.php
    http://www.php.net/manual/de/function.preg-match-all.php
    http://www.danielfett.de/df_artikel_regex.html

    Gruß crAzywuLf :D

  • Also was ich möchte in Klartext:

    Ich habe einen HTML Code in einem String.
    Da möchte ich das Vorkommen von Links aufspüren und alle <a href=" Links ein klein wenig abändern und die Links stehen ja zwischen <a href=" und ".

    Aber ich versuchs mal mit crazywulfs Ansatz, danke...