Anführungszeciehn in einem String automatisch maskieren
Mischa
- php
Hallo SelfForumler, :)
ich bin mir nicht sicher, ob die Frage hier im Forum irgendwann schonmal gestellt wurde - zumindest habe ich bei meiner Suche nix gefunden...:
Gibt es einen PHP-Befehl oder irgendeine Möglichkeit, MIT PHP (nicht mit irgendeinem Editor oder so etwas in Vorhinein!) einen String nach einem bestimmten Zeichen (in meinem speziellen Fall z.B. Anführungszeichen ") zu durchsuchen und an jeder Stelle, wo dieses Zeichen auftritt, einen Backslash zur Maskierung einzufügen?
Beispiel:
"Ich bin ja so traurig, dass ich <font face="Comic Sans MS,Verdana" color="#FF0000">keine</font> Möglichkeit kenne, Anführungszeichen zu maskieren."
"Ich bin ja so traurig, dass ich <font face="Comic Sans MS,Verdana" color="#FF0000">keine</font> Möglichkeit kenne, Anführungszeichen zu maskieren."
Danke für Eure Hilfe.
Viele Grüße,
Mischa
Hi!
addslashes() ist dein Freund.
Hi!
addslashes() ist dein Freund.
Jo, das Problem ist nur, dass mit addslashes() nicht nur Anführungszeichen maskiert werden, sondern z.B. auch Semikolons (oder wie der Plural davon auch immer heißt... ;-))!!!
Außerdem gab das noch einige andere Probleme, als ich's ausprobiert hab.
Mischa
Hi!
(oder wie der Plural davon auch immer heißt... ;-))!!!
Semikola
dann nimm eben
$text=str_replace(""","\"",$text);
Hi!
(oder wie der Plural davon auch immer heißt... ;-))!!!
Semikola
Echt? Wieder was gelernt... ;-)
dann nimm eben
$text=str_replace(""","\"",$text);
Hey, danke! Wenn das funktioniert, bin ich dir echt dankbar!
Werd's gleich mal ausprobieren...
Mischa
dann nimm eben
$text=str_replace(""","\"",$text);
Hey, das hat geklappt!
Leider gibt's aber irgendwie ein anderes Problem,was evtl. mit meinem Quelltext zusammen hängt:
<html>
...
<!-- Grafischer Rahmen der Page //-->
<!-- Einlesen des Strings aus einer Datenbank in die Variable $content //-->
...
$content = $text=str_replace(""","\"",$content);
echo "$content";
...
<!-- Grafischer Rahmen der Page //-->
...
</html>
Schau dir die Page mal an, falls du noch online bist - wieso sieht das recht so komisch aus und wieso wird die Grafik nicht angezeigt?
URL: => http://www.mischa-hildebrand.de/beta/index.php?si=1
Gruß,
Mischa
Hi!
Hey, das hat geklappt!
normal :D
Dein Problem hängt damit zusammen, dass der img-Tag auch " benutzt:
<img src="..">
Wenn du den escapsed, hast du:
<img src="...">
und das nicht ein HTML-Tag.
Verstehst? Der img-Tag darf nicht escaped werden
CU
http://www.yubb.de
Dein Problem hängt damit zusammen, dass der img-Tag auch " benutzt:
<img src="..">Wenn du den escapsed, hast du:
<img src="...">und das nicht ein HTML-Tag.
Hey, stimmt! Hätte ich selbst drauf kommen müssen...
du weißt nicht zufällig, wie man das lösen könnte?! *verzweifel*
Danke für den Support übrigens ;-)
=========================
www.youth-page.de
www.mischa-hildebrand.de
Hi!
du weißt nicht zufällig, wie man das lösen könnte?! *verzweifel*
Wär das dein einziges Problem...
man denke an Links (<a href="...">), Schriftformatierung (<font color=".." face=".."> bzw. style="...") oder andere Dinge...
also es geht nicht das eine ohne das andere...
MUSST du denn escapen?
Ich mein, du kannst doch die Daten mit addslashes() IN die DB einspeichern und dann mit stripslashes() auslesen und dann ausgeben... Oder?
MUSST du denn escapen?
Ich mein, du kannst doch die Daten mit addslashes() IN die DB einspeichern und dann mit stripslashes() auslesen und dann ausgeben... Oder?
Stimmt, das wär 'ne Idde. Allerdings hatte ich es bisher so gedacht, dass ich den text manuell in die Datenbank eingebe - wenn ich das mit addslashes() und stripslashes() mache, müsste ich ja gleich ein ganz neues Script mit Formular etc. machen oder den Text eben einfach vor dem Einfügen durch addslashes() laufen lassen, was mir aber irgendwie zu unbequem ist... ;-)
Wie stellst du dir das eigentlich genau vor?
$content = stripslashes($content);
So, und dann?
Wenn ich dann $content mit echo ausgeben will, tritt ja wieder das gleiche Problem auf! (in $content ist übrigens HTML-Quelltext enthalten, was du ja an dem img schon gemerkt hast)
Viele Grüße,
Mischa
Hi!
Wenn ich dann $content mit echo ausgeben will, tritt ja wieder das gleiche Problem auf! (in $content ist übrigens HTML-Quelltext enthalten, was du ja an dem img schon gemerkt hast)
Warum musst du überhaupt da slashes machen? Ich mein: Das wird doch ausgegeben, wie es da ist: Gibst du über phpmyadmin oder weiß ich was PHP-Sonderzeichen (wie eben ") ein, so werden die automatisch escaped.
Und liest du die aus, werden sie wiederzurück escaped, so isses zumindest bei mir.
Schau dir meine Seite an, da ist fast alles aus der DB. Und ich nutze NIRGENDS addslashes() oder stripslashes(). Über SInn oder Unsinn lässt sich streiten, aber warum musst du unbedingt escapen?
Hallo nochmal ;-),
Über SInn oder Unsinn lässt sich streiten, aber warum musst du unbedingt escapen?
Weils anders leider nicht funktioniert!! (zumindest bei mir nicht - all-inkl.com) :(
Hab's mal ohne irgendwas - also nur mit echo() eingegeben (gleiche Page wie eben angegeben): Schau dir an, wie's aussieht!!
Viele Grüße,
Mischa
Hi!
Sorry, aber bei mir funzt alles *schulter zuck*
Hi nochmal zu später Stunde...,
Sorry, aber bei mir funzt alles *schulter zuck*
Das ist sch....lecht für mich. ;-)
Kannst du vielleicht mal deinen gesamten Quelltext inkl. Datenbankabfrage (natürlich ohne Passwort usw.) posten, damit ich schauen kann, was bei mir falsch ist?
Wär echt super nett! Muss ja nicht Header usw. dabei sein, nur der Bereich, in dem es um die Integration der Datensätze mit MySQL und PHP geht.
Viele Grüße,
Mischa
Hey!
Mittlerweile hab ich's auch hingekriegt!
Funktioniert doch - war ein kleiner Fehler in dem Quelltext selbst drin, den ich da eingefügt hab, weswegen die Page dann etwas blöd aussah...
Sorry, aber bei mir funzt alles *schulter zuck*
Das Schulterzucken war also zu Recht... ;-)
Danke nochmal für deine Hilfe!! Säße sonst vermutlich noch drei Wochen da und wäre am Suchen nach einer geeigneten Funktion... :-)
Viele Grüße,
Mischa