Ermitteln eines Strings aus einem Textfeld

  • Ermitteln eines Strings aus einem Textfeld

    Hallo Leute,

    ich stehe mal wieder vor einem kleinen Problem.
    Ich habe ein Formular bei dem der User im Textfeld zusätzlich zum Text auch Links in form von "http://www.xyzxyz.xyz" angeben kann. Diese Links werden dann per preg_replace umgeschrieben so das ein A-Tag daraus wird. Bisher kein Problem. Zusätzlich soll aber auch in einer TXT-Datei der Link eingetragen werden der in der Schreibweise "http://www.xyzxyz.xyz" bleibt. Wie kann ich das machen? ich habe es schon mit if(eregi... probiert, bekomme es aber nicht zum laufen. Hier mein Code

    Quellcode

    1. $texteinleitung = preg_replace("/((http(s?):\/\/)|(www\.))([\w\_\-\/\.\?\=\&\~]+)/i", "<a href=\"".$viewpfad."http$3://$4$5\" target=\"_blank\">$2$4$5</a>", $texteinleitung);
    2. if(eregi("/((http(s?):\/\/)|(www\.))([\w\_\-\/\.\?\=\&\~]+)/i", $texteinleitung))
    3. {
    4. $url = "????????????";
    5. $datei = fopen($databases_dir."statistiken.txt", "a+");
    6. flock($datei,2);
    7. fputs($datei, "".$url.";;0;;\n");
    8. flock($datei,3);
    9. fclose($datei);
    10. }


    Warscheinlich stimmt schon die if(eregi... -Abfrage nicht. Könnt Ihr mir bitte helfen?

    Gruß KMD
  • Re: Ermitteln eines Strings aus einem Textfeld

    "KMD" schrieb:


    Quellcode

    1. $texteinleitung = preg_replace("/((http(s?):\/\/)|(www\.))([\w\_\-\/\.\?\=\&\~]+)/i", "<a href=\"".$viewpfad."http$3://$4$5\" target=\"_blank\">$2$4$5</a>", $texteinleitung);
    2. if(eregi("/((http(s?):\/\/)|(www\.))([\w\_\-\/\.\?\=\&\~]+)/i", $texteinleitung))
    3. {
    4. $url = "????????????";
    5. $datei = fopen($databases_dir."statistiken.txt", "a+");
    6. flock($datei,2);
    7. fputs($datei, "".$url.";;0;;\n");
    8. flock($datei,3);
    9. fclose($datei);
    10. }


    Nimm doch preg_match_all, dann kannst Du Den Link wieder zusammenbauen. Kein fertiger Code, nur mal um in die Richtung zu kommen:

    Quellcode

    1. preg_match_all("/((http(s?):\/\/)|(www\.))([\w\_\-\/\.\?\=\&\~]+)/i", $texteinleitung, $arrMatches, PREG_PATTERN_ORDER);
    2. if(is_array($arrMatches)) {
    3. foreach($arrMatches as $arrMatch) {
    4. echo('<pre>');
    5. print_r($arrMatch);
    6. echo('</pre>');
    7. }
    8. }


    Schau Dir mal an, was in $arrMatch drin steht, damit kannst Du dann den Link wieder zusammen bauen und eine RegEx basteln für Dein "preg_replace"...

    Deine RegEx habe ich mir nicht weiter angeschaut, ich bin davon ausgegangen, das die, für das was Du haben willst, stimmt...

    70abc
    We raise hopes, here ... until they're old enough to fend for themselves.
    - Mike Callahan