kluthi
Goto Top

Zeichenketten aus String (Text) ausschneiden und in Array packen?

Aus einen Text sollen bestimmte Bereiche ausgeschnitten werden und in ein Array gepackt werden

Hallo,

ich habe ein Problem in php.
Ich habe ein Text der etwa so aussieht:

Text Text Text Text
Text Text Text Text
Text Text Text Text
[kommentar]
Text Text Text Text
Text Text Text Text
Text Text Text Text
[/kommentar]
Text Text Text Text
Text Text Text Text
Text Text Text Text
Text Text Text Text
Text Text Text Text
[kommentar]
Text Text Text Text
Text Text Text Text
Text Text Text Text
[/kommentar]
Text Text Text Text
Text Text Text Text
Text Text Text Text


Der ganze Text befindet sich in einem String.
Jetzt will ich alle Teile zwischen [kommentar] und [/kommentar]
ausschneiden und in ein Array packen, sodass ich die verändern kann.

Ich hoffe das ist verständlich und hoffe das mir jemand helfen kann

Gruß kluthi

Content-Key: 62473

Url: https://administrator.de/contentid/62473

Printed on: April 25, 2024 at 17:04 o'clock

Member: kluthi
kluthi Jun 27, 2007 at 12:18:19 (UTC)
Goto Top
das hilft nicht wirklich, den es kann ja auch sein das nicht nur 2 sondern 3 container in dem text sind.
Member: EvilMoe
EvilMoe Jun 27, 2007 at 12:48:38 (UTC)
Goto Top
explode ist schon richtig das speicher dir immer ab [kommentar] alles in einen array.
Dieses Beispiel sollte funktionieren
// $data sollte den kompletten string enthalten

$str = explode('[kommentar]' , $data);  

$kommentar=array();
foreach( $str as $id => $str)
{
	$pos=strpos($str, '[/kommentar]');  
	$kommentar=substr($str, 0, $pos);
}

echo var_dump($kommentar);
Member: kluthi
kluthi Jun 27, 2007 at 14:02:39 (UTC)
Goto Top
ok, danke das geht.

Kann mir den auch noch einer sagen, wie ich dann die Kommentar-ausschnitte, nachdem ich die verändert habe, wieder in den string einfügen kann? Also an der stelle, an der sie waren!?
Member: EvilMoe
EvilMoe Jun 28, 2007 at 13:12:38 (UTC)
Goto Top
Sie wurden doch nie entfernt. Die Variable $data enthält immernoch den kompletten String inclusive den Kommetaren.
Member: kluthi
kluthi Jun 28, 2007 at 14:05:15 (UTC)
Goto Top
wenn ich den inhalt dann veränder, ist der dan an der gleichen stelle auch verändert!?
Member: EvilMoe
EvilMoe Jun 28, 2007 at 14:14:42 (UTC)
Goto Top
Ohh sry hab dich falsch verstanden. Was du nun vor hast funktioniert nach dem selben Prinzip, ausser das du nun in der Schleife den Kommetar nicht in einen Array speicherst sondern ersetzt (str_replace). SOllte ungefär dann so aussehen.

$str = explode('[kommentar]' , $data);  

$kommentar=array();
foreach( $str as $id => $str)
{
    $pos=strpos($str, '[/kommentar]');  
    $kommentar=substr($str, 0, $pos);
   
   // ersetzt den alten mit dem neuen kommentar
    $ndata = str_replace($kommentar, 'Der neue Kommentar', $data);  

}
// $ndata enthält jetzt den String mit den neuen Kommentar