XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   PHP: ereg_replace verursacht fehler nach Umstellung auf UTF-8 (http://xhtmlforum.de/showthread.php?t=46641)

braindead 30.06.2007 16:21

PHP: ereg_replace verursacht fehler nach Umstellung auf UTF-8
 
Hi ich erhalte seit meiner Umstellung auf UTF-8 bei der Anwendung der folgenden Funktion auf einen aus meiner mysql Datenbank stammenden String einen Fehler:

PHP-Code:

function escape_for_js($string) {
    
$string ereg_replace("'","\'",$string);
    
$string ereg_replace("(","\(",$string);
    
$string ereg_replace(")","\)",$string);
    return 
$string;


Der Fehler den ich erhalte ist dieser:
Warning: ereg_replace() [function.ereg-replace]: REG_EPAREN in /WWWROOT/1647/htdocs/inc/header_string.php on line 56

Die Zeile ist die Zeile in welcher ( durch \( ersetzt werden soll, wenn ich diese also die zweite Zeile einfach auskommentere gibt es den Fehler nicht.
Wenn der Fehler aber kommt dann kommt am Ende garnichts mehr raus, also die Funktion liefert einen leeren String.

Merkwürdig ist nur das die Funktion vorher super Funktioniert hat, es muss also irgentwie mit der UTF-8 Umstellung zu tun haben.

Gumbo 30.06.2007 16:38

Die „ereg_replace()“-Funktion erwartet einen regulären Ausdruck, bei denen die Klammern Metazeichen sind, die ebenfalls maskiert werden müssten. Nimm einfach folgende Funktion:
PHP-Code:

function escape_for_js$str )
{
    return 
addcslashes($str"'()");



netspy 30.06.2007 17:08

  1. Nutze Gumbos Funktion.
  2. Wenn nicht, nutze str_replace, da du ja sowieso keinen regulären Ausdruck brauchst.
  3. Wenn du doch mit RegEx arbeiten willst/musst, nutze preg_replace.
Mario

braindead 30.06.2007 17:19

Danke für die Hilfe, das hats gebracht.
Aber nur mal so nebenbei, wieso hat die Funktion vorher funktioniert?
Gibt es da Ursachen die mit der Umstellung auf UTF-8 zusammenhängen?
Ansonsten, wenn ihr jetzt sagt, es kann vorher auch nicht funktioniert haben, dann kann ich das in gewisser Weise auch akzeptieren, denn scheinbar habe ich in meine Funktionen Datei änderungen vergenommen, aller warscheinlichkeit nach unbeabsichtigte. Denn aus irgenteinem Grund hat in der Offline Version meiner Include Daten das return gefehlt. Und ohne return hätte die Funktion ja sowieso nicht funktioniert.

xm22 02.07.2007 11:21

Ich weiß nicht, ob es daran liegt, aber einige Funktionen in PHP (zumindest in älteren Versionen) scheinen nicht utf-8-fest. Probier mal substr an einem String, der Sonderzeichen enthält, wenn der String nach einem Sonderzeichen abgeschnitten werden soll...

netspy 02.07.2007 11:28

Dafür gibt es auch die Multibyte-Funktionen wie bspw. mb_substr. Die sind dann auch Unicode-sicher.

Mario


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:36 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023