preg_replace ... ?

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

  • preg_replace ... ?

    Guten Morgen,
    ich habe im moment ein klitze kleines Problem mit dem Befehl preg_replace.
    Es geht darum das ich in einer Textdatei mehrere Zeilen stehen habe die ich problemlos auch wieder ausgeben kann. Nun steht aber in einigen Zeilen

    Text Text bld:http://www.bla/bilder/tollesbild.gif Text Text

    Eine Lösung habe ich

    PHP-Code:
              if (strstr($line[$i],"bld:"))  #Sucht in der Datei nach bld:  
              

                    
    $start1 strpos ($line[$i], "bld:");  
                    
    $end1 strpos ($line[$i], " "$start1 4);  # bld: hat +4 Buchstaben
                    
    if($end1 == ""
                         
    $end1 strlen($line[$i]);  
                    
    $bild substr($line[$i], $start1 4$end1 $start1 4);
                   if (!
    strstr($bild,"http://"))  #Wenn kein [url]http://[/url] ... weil ohne http gibt es fehler 
                   

                          
    $bild "<img src=\"http://".substr($line[$i], $start1 4$end1 $start1 4)."\" height=\"15\" align=\"bottom\">";  
                   } 
                     else  
                   { 
                         
    $bild "<img src=\"".substr($line[$i], $start1 4$end1 $start1 4)."\" height=\"15\">";  
                   } 
                    
    $line[$i] = substr($line[$i], 0$start1).$bild.substr($line[$i], $end1); #fügt die URL zusammen
              

    Allerdings finde ich das viel zu umständlich auch wenn es Problemlos funktioniert.

    Ich bin etwas durch dieses Forum gesurft und bin auf dieses hier gestossen das eigentlich ja das selbe macht nur wesentlich einfacher.

    PHP-Code:
            // Auto URL      
              
    $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\/\&a-zA-Z0-9\.]*)§';
              
    $code "<a target=\"_blank\" href=\"http://\\3\">\\3</a>";
              
    $nachricht preg_replace($hack,$code,$nachricht);
              
    $hack '§(?<!(/|\]|>|=|"))([url]www.[/url])([;_=\-\#\?\/\&a-zA-Z0-9\.]*)§';
              
    $code "<a target=\"_blank\" href=\"http://www.\\3\">[url]www.\\3[/url]</a>";
              
    $nachricht preg_replace($hack,$code,$nachricht); 
    Ich habe es versucht so anzupassen das es bei mir läuft, aber schaut selber ...

    PHP-Code:
              $hack '§(?<!(\]|=|"|>))(bld:)([;_=\-\#\?\/\&a-zA-Z0-9\.]*)§';
              
    $code "<img src=\"http://\\3\">";
          
    $line[$i] = preg_replace($hack,$code,$line[$i]); 
    Das Problem was ich habe das ich nicht wirklich aus den ganzen Tutorials schlau werde wie ich genau danach suchen muss. Wäre klasse wenn mir jemand helfen könnte. Wenn es überhaupt mit preg_replace klappt ?
    Zuletzt geändert von Mundgeruch; 01.09.2005, 07:08.

  • #2
    Hallo

    durch was möchtest du den Bild ersetzen? Ich verstehe die ganze Frage nicht.

    Ich sehe nur an Hand des Codes, du möchtest irgend was bis zu einem Leerzeichen als Bildnamen ersetzen oder?

    PHP-Code:
    <?php
    $text 
    "Hallo hier steht ein Text bld: http://www.2ts2.net/images/logo.gif und das war das bild";
    $text=preg_replace("/bld:(.*) /siU",'<img src="\\1" border="0">',$text);
    echo 
    $text;
    ?>
    Zuletzt geändert von LGC; 01.09.2005, 00:57.

    Kommentar


    • #3
      hmm,

      deaktiviere doch das nächste mal die smilie- und url-ersetzung, wenn du postest. beschreibe bitte auch, was du machen möchtest.

      du willst eine angabe
      Code:
      bld:[url]http://www.web.de/bild.jpg[/url]
      in den entsprechenden img-tag wandeln?

      edit: generell hat LGC schon recht, auch wenn er offenbar die smilie-ersezung auch nicht deaktiviert hat. such nach deinem einleitenden tag, gefolgt von mindestens einem nicht-leerzeichen, setze klammern, um einen unterausdruck zu erzeugen =>
      Code:
      (\S+)
      du kannst auf diesen unterausdruck im ersatz per \1, \\1 oder $1 zurückgreifen.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        Moin,
        sorry war etwas zu spät gestern Nacht

        Ich will natürlich das wenn bld:www.bla.de/bilder/tollesbild.jpg dort steht, er mir dieses direkt als Bild umwandelt.

        such nach deinem einleitenden tag, gefolgt von mindestens einem nicht-leerzeichen, setze klammern, um einen unterausdruck zu erzeugen
        Da ist mein Problem ich weiss einfach nicht was
        '§(?<!(]|=|"|>))(bld([;_=-#?/&a-zA-Z0-9.]*)§';
        bedeutet und somit bekomme ich natürlich auch nicht hin das so umzuschreiben das er nach bld: sucht und dann bis nur zum Leerzeichen.
        Zuletzt geändert von Mundgeruch; 01.09.2005, 07:17.

        Kommentar

        Lädt...
        X