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:
danach haste deine Zeichenkette ohne [html] Text [/html] und kannst htmlentities drauf anwenden.
hope this helps,
Sven.
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:
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
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 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...

