Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

String manipulieren





Frage

haloa! habe zum beispiel folgenden string: $code = "bla bla blah [html] <p>html-code jajaja</p> [/html] bla bla bla"; ich möchte jetzt auf alle teile, die nicht zwischen "[html] . . . [/html]" stehen, htmlentities() anwenden. wie mache ich das?? ich bin am verzweifeln... habe schon ausführlich mit preg_replace und regulären ausdrücken experimentiert, aber irgendwie krieg ich das nicht auf die reihe... wäre super, wenn irgendjemand weiterhelfen könnte ;/ ich wäre seeehr dankbar... gruß, jb

Antwort 1 von rabies

Hey,

Keine schöne Lösung, aber eine Lösung:

 
	$str="<html><head><title>titel der webseite</title></head><body> irgendwas [html] bla <div style=´border: blaaaa´>blubb und bla</div> bla [/html] noch irgendwas </body></html>";
	preg_match("/\[html\].*\[\/html\]/ims", $str, $pattern);
	$str=str_replace($pattern[0], " ", $str);


danach haste deine Zeichenkette ohne [html] Text [/html] und kannst htmlentities drauf anwenden.

hope this helps,
Sven.

Antwort 2 von Fimon

Ich würds so machen:

$a=explode("[html]",$code);
$b=explode("[/html]",$a[1]);
$b[0]=htmlentities($b[0]);
$a[1]=implode("[/html]",$b);
$code=implode("[html]",$a);


Antwort 3 von Fimon

Sorry, hatte mich verlesen und genau das Falsche mit htmlentities() behandelt.
Also umgekehrt:

$a=explode("[html]",$code);
$a[0]=htmlentities($a[0]);
$b=explode("[/html]",$a[1]);
$b[1]=htmlentities($b[1]);
$a[1]=implode("[/html]",$b);
$code=implode("[html]",$a);


Antwort 4 von jbcdefg

jaaa.. danke!!

ich glaube, das hilft schon mal einigermaßen weiter.

allerdings wird hier ja immer nur ein ´[html]bla[/html]´ erkannt – wenn ich jetzt
zum beispiel ´normaler text [html] html code [/html] normaler text [html] html code
[/html] normaler text´ habe, funktioniert es nicht mehr...

ich experimentiere gerade.. mal sehn, vielleicht wird das noch was

vielen dank jedenfalls!
jb

Antwort 5 von Fimon

Probier mal das:

$a=explode("[html]",$code);
$a[0]=htmlentities($a[0]);
for($n=1;$n<sizeof($a);$n++){
	$b=explode("[/html]",$a[$n]);
	$b[1]=htmlentities($b[1]);
	$a[$n]=implode("[/html]",$b);
}
$code=implode("[html]",$a);


Antwort 6 von jbcdefg

wooow.. danke danke!!

ich versteh zwar nicht genau warum.. aber es funktioniert!!

.. ich hatte jetzt allerdings auch eine eigene lösung gefunden (wen´s
interessiert):


$alles = explode (´[html]´, $string);
$i = 0;
foreach ($alles as $key => $value) {
if ($key ==$i) {echo htmlentities($value); $i = $i+2;}
else echo $value;
}


zuvor muss man noch alle [/html] in [html] umwandeln...

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: