[PHP] text zwischen [anfang] und [ende] herausfiltern

King_Markus

Well-known member
ID: 66751
L
24 November 2006
264
12
hallo,

mal wieder ein kleines aber machbares problem.
ich bekomme einen text per post übermittelt diesen möchte ich auch behalten nur ein textstück im text möchte ich bearbeiten. also kurzzeitig ausschneiden und später wieder einfügen.
mit explode wäre es vielleicht möglich aber ich bekomme das nicht so hin wie ich möchte.

PHP:
<?php
$post_text = "Hallo wie geht es dir ?[anfang]Hallo wie geht es dir?[ende]Mir geht es gut.[anfang]gut es macht mir spaß[ende]Richtig";
?>
Ich will jetzt den Text zwischen [anfang] und [ende] ausschneiden und seperat mit str_replace bearbeiten

PHP:
<?php
$anfang_ende_text= // text zwischen anfang und ende
 
    $file = array ( 'Hallo', 'wie', 'gut');
    $image = array ( '<b>Hallo</b>', '<em>wie</em>', '<u>gut</u>');

    $anfang_ende_text = str_replace ($file, $image, $anfang_ende_text);

$post_text_b=// text vor anfang1|$anfang_ende_text|text nach ende1 vor anfang2|$anfang_ende_text2|text nach ende2
?>
Ich hoffe ich hab es jetzt richtig erklärt was ich machen will.
falls noch fragen offen sind fragt bitte ich gib euch alle antworten die ihr braucht um mir zu helfen.

bedanke mich im voraus.

mfg markus
 
so funktioniert es auch nicht.
hab jetzt halt mal ein bisschen was versucht.
vielleicht bringt euch das weiter oder auf eine idee.

PHP:
$php_teil = explode("[anfang]" OR "[ende]", $fr_be_text);
$zahl = floor( count($php_teil)/2 );
for ($i=1;$i <= $zahl;$i++) {
    $php_teil_text[$i]['voranfang']      = $php_teil[($i-1)*2];
    $php_teil_text[$i]['vorende']       = $php_teil[(($i-1)*2)+1];
    $file = array ( 'Hallo', 'wie', 'gut');
    $image = array ( '<b>Hallo</b>', '<em>wie</em>', '<u>gut</u>');

    $php_teil_text[$i]['vorende'] = str_replace ($file, $image, $php_teil_text[$i]['vorende']);
    $php_teil_text[$i]['vorende']=sprintf("[anfang]".$php_teil_text[$i]['vorende']."[ende]");
$fr_be_text=sprintf("".$fr_be_text."".$php_teil_text[$i]['voranfang']."".$php_teil_text[$i]['vorende']."");
}
 
Zuletzt bearbeitet:
Wie soll denn der String danach aussehen? Die Lösung deines Problemes lautet auf jeden Fall: Reguläre Ausdrücke.
 
so jetzt hab ich mal alles in den code geschrieben.
es soll nur das bearbeiten was zwischen [anfang] und [ende] steht

$fr_be_text="Hallo wie geht es dir ?[anfang]Hallo wie geht es dir?[ende]Mir geht es gut.[anfang]gut es macht mir spaß[ende]Richtig"; // so sieht die eingabe aus

PHP:
$fr_be_text="Hallo wie geht es dir ?[anfang]Hallo wie geht es dir?[ende]Mir geht es gut.[anfang]gut es macht mir spaß[ende]Richtig"; // so sieht die eingabe aus

$php_teil = explode("[anfang]" OR "[ende]", $fr_be_text);
$zahl = floor( count($php_teil)/2 );
for ($i=1;$i <= $zahl;$i++) {
    $php_teil_text[$i]['voranfang']      = $php_teil[($i-1)*2];
    $php_teil_text[$i]['vorende']       = $php_teil[(($i-1)*2)+1];
    $file = array ( 'Hallo', 'wie', 'gut');
    $image = array ( '<b>Hallo</b>', '<em>wie</em>', '<u>gut</u>');

    $php_teil_text[$i]['vorende'] = str_replace ($file, $image, $php_teil_text[$i]['vorende']);
    $php_teil_text[$i]['vorende']=sprintf("[anfang]".$php_teil_text[$i]['vorende']."[ende]");
$fr_be_text=sprintf("".$fr_be_text."".$php_teil_text[$i]['voranfang']."".$php_teil_text[$i]['vorende']."");
} 

$fr_be_text="Hallo wie geht es dir ?[anfang]<b>Hallo</b> <em>wie</em> geht es dir?[ende]Mir geht es gut.[anfang]<u>gut</u> es macht mir spaß[ende]Richtig"; //so soll es danach aussehen
$fr_be_text="Hallo wie geht es dir ?[anfang]<b>Hallo</b> <em>wie</em> geht es dir?[ende]Mir geht es gut.[anfang]<u>gut</u> es macht mir spaß[ende]Richtig"; //so soll es danach aussehen
 
Warum so kompliziert?

Wie soll denn der String danach aussehen? Die Lösung deines Problemes lautet auf jeden Fall: Reguläre Ausdrücke.

PHP:
<?php
    $string = 'Text bla bla [anfang]Text zum weiterarbeiten[ende] Text bla bla';
    
    $neuer_string = preg_replace('~(.*)\[anfang\](.*)\[ende\](.*)~U', '\2', $string);
?>

Greetz

paddya
 
Zuletzt bearbeitet:
PHP:
<?php
    $string = 'Text bla bla [anfang]Text zum weiterarbeiten[ende] Text bla bla';
    
    $neuer_string = preg_replace('~(.*)\[anfang\](.*)\[ende\](.*)~U', '\2', $string);
?>

funktioniert nicht ganz...bei mir muss man das ~U durch ~ ersetzen
also das es dann so aussieht:
PHP:
    $string = 'Text bla bla [anfang]Text zum weiterarbeiten[ende] Text bla bla';
    
    $neuer_string = preg_replace('~(.*)\[anfang\](.*)\[ende\](.*)~', '\2', $string);

Mfg Greggy
 
also ich habs jetzt so nur ganz funktioniert immer noch nicht.

PHP:
$text = "Hallo wie gehts?
[code]<?php
echo 'xxx';
array('gg', 'gh');
?>[/code]
Ich hoffe es funktioniert
[code]<?php
echo 'xxx';
array('gg', 'gh');
?>[/code]
Ich hoffe es funktioniert
[code]<?php
echo 'xxx';
array('gg', 'gh');
?>[/code]
Ich hoffe es funktioniert";

$php_teil = preg_replace('/(.*)\[code\](.*)\[\/code\](.*)/Usi', '\2', $text);
echo "$php_teil<br>";

die ausgabe sieht wie folgt aus:
<?php echo 'xxx'; array('gg', 'gh'); ?><?php echo 'xxx'; array('gg', 'gh'); ?><?php echo 'xxx'; array('gg', 'gh'); ?> Ich hoffe es funktioniert
das was rot ist sollte ja eigentlich auch weg sein.