preg_replace / Abschnitt

js-mueller

Erfahrenes Mitglied
HI ich hab ein Problem mit meinem Preg replace. Ich habe eine html datei in der ein abschnitt ist der ungefähr so aufgebaut ist

Code:
<!-- MSK-ABS:Block1 -->
Dies ist ein toller Text im Block
<!-- MSK-ABS:Block1 -->

So nun möchte ich diesen Block durch was anderes erstzen, dazu hab ich diese preg_replace funktion.

PHP:
$this->mskPuffer = preg_replace("/<!-- MSK-ABS:".$aenStelle." -->.*<!-- MSK-ABS:".$aenStelle." -->/iU",$aenWert,$this->mskPuffer);
Doch leider wird garnichts ersetzt :-/
Die Variable $aenstelle enthält zB. Block1.

Ich hoffe ihr könnt mir helfen
Danke
 
Verpasse deinem Ausdruck mal zusätzlich den Schalter "s"

Der Punkt findet ohne diesen Schalter nicht den Zeilenumbruch... daher fünktioniert der Ausdruck nur, wenn der ganze Abschnitt in einer Zeile steht.

Könnte aber auch an was anderem liegen... das war nur das erste, was mir aufgefallen ist:-(
 
Mmmh... schwer zu sagen, woran es sonst liegt... habs mal kurz probiert...es funktioniert:
PHP:
<?php

class klasse
{
var $mskFaktor;
    
function funktion($aenStelle,$aenWert)
    {
    $this->mskPuffer = preg_replace("/<!-- MSK-ABS:".$aenStelle." -->.*<!-- MSK-ABS:".$aenStelle." -->/iUs",$aenWert,$this->mskPuffer);
    echo $this->mskPuffer;
    }

}
$out=new klasse;
$out->mskPuffer='<!-- MSK-ABS:Block1 -->
                Dies ist ein toller Text im Block
                <!-- MSK-ABS:Block1 -->';
$out->funktion('Block1','AenWert1');
?>
... gibt 'AenWert1' aus.

Hast du in deinem Teststring auch die Leerzeichen innerhalb der Kommentarklammern drinnen?
 
PHP:
preg_replace("/<!-- MSK-ABS:".$aenStelle." -->.*<!-- MSK-ABS:".$aenStelle." -->/isU", $aenWert, $this->mskPuffer);
Doch es geht!
 
hmm komisch, bei mir nicht :-/
Naja ich bin gerade nich zuhause deswegen kann ich nicht nachprüfen ob ich nen Tipfehler habe. Ich meld mich heute Abend nochma
 
Oh ich glaub ich hab was wichtiges vergessen zu sagen ;-)
$this->mskPuffer ist nen array welcher aus file kommt. Ich denke mal das ich auch der Fehler. Wie muss ich es umschreiben damit es funktioniert. Mit implode kann ich den array als string einlesen, aber wie bekomm ich ihn wieder als array raus?

edit:

so ich habs mit explode/implode hinbekommen. Nur ist der ganze Kram im Quellcode imformatiert, dass heisst die \r\n sind nicht vorhanden oder so, weil alles in einer reihe steht.
Hab einfach nen explode("\n",...) gemacht. Vieleicht weiss ja wer ne Lösung
 
Zuletzt bearbeitet:
Zurück