str_replace mit Sonderzeichen

Homer Simpson

Mitglied
Hallo zusammen,

ich habe ein kleines Problem mit str_replace, welches ich nicht nachvollziehen kann. Gegeben sind Daten aus einer Tabelle, die per SQL abgefragt werden und in einer while Schleife per
Code:
$daten[] = $row;
in ein Array geschrieben werden.
Folgende Sonderzeichen möchte ich herausfiltern: ´ ` ' usw.
also habe ich vor der while-Schleife ein Array erzeugt:
Code:
$sonderzeichen = array('´','`',"'");
und die Zuweisung der Daten folgendermaßen geändert:
Code:
$daten[] = str_replace($sonderzeichen,'',$row);
Komischerweise geht das aber nicht. Mit allen anderen Zeichen ja, aber mit diesen Sonderzeichen nicht.
Zum testen habe ich
Code:
$sonderzeichen = array('a','b',"c");
probiert und das ging ohne Probleme

Was kann ich sonst noch probieren um die Sonderzeichen herauszufiltern?

Gruß
Markus
 
PHP:
$sonderzeichen = array("\´","\`","\'");

Ich würde mal ausprobieren die Sonderzeichen zu escapen.
Denke es liegt daran..
 
Ist $row denn überhaupt eine Zeichenkette?

Nein, $row ist ein ganzer Datensatz, also ein Array.

mayermart hat gesagt.:
Wurden die Inhalte in der Datenbank zuvor mit htmlspecialchars verarbeitet?
dann wäre aus einem _'_ ein _′_ geworden..
Gespeichert wird die Zeichenkette per mysql_real_escape_string($zeichenkette)
Wenn es denn ein _′_ wäre, wie muss dann das Array $sonderzeichen aufgebaut werden?

mayermart hat gesagt.:
Du kannst str_replace nicht auf ein Array anwenden:
Doch das geht. http://de.php.net/str_replace
Siehe bei Subject: Ist subject ein Array, erfolgt das Suchen und Ersetzen für jeder Wert von subject , und der Rückgabewert ist ebenfalls ein Array.
 
Zuletzt bearbeitet:
PHP:
$sonderzeichen = array("´","(hier weiß ich die kodierung nicht)","′");

edit:
[phpf]get_html_translation_table[/phpf] gibt dir die richtigen Kodierungen aus.
Hab grad festgestellt meine sind falsch ;)
 
Zuletzt bearbeitet:
Folgender Code
Code:
$trans = get_html_translation_table(HTML_ENTITIES);
$str = "´";
$encoded = strtr($str, $trans);
echo $encoded;
Führt bei mir zu dem Ergebnis:
Code:
´

Aber das hilft mir nicht weiter, denn wenn ich mir den Quellcode anschaue, an der Stelle wo das Sonderzeichen aus der Tabelle steht, steht da auch ein ´ . :suspekt:

Mein Problem ist übrigens Folgendes:
Nach dieser Abfrage habe ich im HTML ein Button, der eine JavaScript Funktion startet. Da aber in dem Parameter dann dieses Zeichen ´ auftaucht, denkt JS das die Zeichenkette an der Stelle zu Ende ist, was zu einem Fehler führt.

Ich denke ich werde wohl versuchen müssen ohne den Parameter auszukommen.
 
Zuletzt bearbeitet:
Zurück