php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 29-04-2008, 11:58
waYan
 Newbie
Links : Onlinestatus : waYan ist offline
Registriert seit: Aug 2007
Beiträge: 9
waYan ist zur Zeit noch ein unbeschriebenes Blatt
Question [REGEX] utf8 - preg_replace - umlaute - sonderzeichen

Hallo,

ich möchte per "preg_replace" Sonderzeichen aus einem UTF-8 String entfernen:

$str = preg_replace('/[^\w\pL]/u', ' ', $str);

Info:

"\u" => pattern-modifier (gibt an, dass es sich um utf-8 handelt)
"\pL" => character-class (alle unicode Zeichen)

Das funktioniert auch wunderbar unter Windows (XP). Unter Linux (CentOs, Fedora), werden die Umlaute als Sonderzeichen erkannt und mit entfernt.

Habe schon eine Menge ausprobiert bekomme die Expression aber nicht unter Linux zu laufen

Hat jemad eine Idee?

greeTz
waYan

Geändert von waYan (29-04-2008 um 16:53 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 29-04-2008, 16:21
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
[^\w\PLöäü]
schonmal ausprobiert?

bzw.:
Code:
ä  ü  ö
ä ü ö
Mit Zitat antworten
  #3 (permalink)  
Alt 29-04-2008, 16:40
waYan
 Newbie
Links : Onlinestatus : waYan ist offline
Registriert seit: Aug 2007
Beiträge: 9
waYan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@$_Baker

thx.. für die Antwort - aber das wäre ja nur ein Workaround. Wer weiss welche Zeichen noch Fälschlicher Weise als Sonderzeichen rausfliegen...


greeTz
waYan
Mit Zitat antworten
  #4 (permalink)  
Alt 29-04-2008, 17:02
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmm.. Die alphanumerischen ([0-9a-zA-Z]) auf jeden Fall ganz sicher nicht

Wenn du allerdings mit kyrillischen oder Chinesischen oder wasweißich-für Buchstaben zu tun hast, dann könntest du recht haben (genau weiß ich das nicht, diese Zeichen gibt es in den 2 Sprachen, mit denen ich zu tun habe, nicht).
Wenn das ß (sz) erhalten bleiben soll, dann noch das hier:
Code:
ß
ß
Mit Zitat antworten
  #5 (permalink)  
Alt 29-04-2008, 17:32
waYan
 Newbie
Links : Onlinestatus : waYan ist offline
Registriert seit: Aug 2007
Beiträge: 9
waYan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ganz genau - dänisch, slowenisch usw.
Mit Zitat antworten
  #6 (permalink)  
Alt 29-04-2008, 17:40
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Allerdings, wenn sich die Anzahl an möglichen Sonderzeichen im Rahmen hält, warum dann nicht str_replace() mit einem Array?
Wäre ja nur einmal alle Tasten, bei denen mehrere Zeichen aufgedruckt sind, mit Umschalt und/oder AltGr durchgehen^^
Mit Zitat antworten
  #7 (permalink)  
Alt 29-04-2008, 19:19
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Denke das utf8_encode und/oder setlocale die Antwort ist!
Mit Zitat antworten
  #8 (permalink)  
Alt 29-04-2008, 20:53
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Unter Linux (CentOs, Fedora), werden die Umlaute als Sonderzeichen erkannt und mit entfernt.
Halt ich für ein Gerücht. /u klappt super und ist genau das was du brauchst (mal abgesehen davon, dass du prec ohne utf8 support kompiliert hast oder so).
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #9 (permalink)  
Alt 29-04-2008, 22:23
waYan
 Newbie
Links : Onlinestatus : waYan ist offline
Registriert seit: Aug 2007
Beiträge: 9
waYan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@PHP-Desaster

setlocale(LC_ALL, 'de_DE.UTF8');

ist natürlich selbstverständlich hat aber leider nicht mit diesem Problem zu tun.

utf8_encode - ist in diesem Zusammenhang auch nix, da die gesamte Seite sowiso in UTF-8 kodiert ist.

@tontechniker

ist aber leider so das ist ja genau die Frage - warum geht es nicht? Kannst Du mir mal bitte Deine phpinfo() - Werte für PCRE, mbstring usw. mitteilen?

Meine lauten:
PHP Version 5.1.6
Apache/2.2.3 (CentOS)
--with-pcre-regex=/usr
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 6.6 06-Feb-2006
Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 3.7.1
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding no value no value
mbstring.language neutral neutral
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value

greeTz
waYan
Mit Zitat antworten
  #10 (permalink)  
Alt 29-04-2008, 23:14
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Kannst Du mir mal bitte Deine phpinfo() - Werte für PCRE, mbstring usw. mitteilen?
PHP Version 5.2.5
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 7.3 2007-08-28
Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 4.4.4
Multibyte regex (oniguruma) backtrack check On
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding UTF-8 UTF-8
mbstring.language neutral neutral
mbstring.script_encoding no value no value
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value

Multibyte regex Einstellungen haben mit /u aber nichts zutun - die sind nur für die mb_ereg-Funktionen. Um aus der Manual zu zitieren:
Zitat:
u (PCRE_UTF8)
Dieser Modifikator schaltet mit Perl nicht kompatible zusätzliche PCRE-Funktionalität an. Suchmuster werden als UTF-8 behandelt. Dieser Modifikator steht unter Unix seit PHP 4.1.0 und unter Win32 seit PHP 4.2.3 zur Verfügung. Ob es sich im Suchmuster um gültiges UTF-8 handelt, wird seit PHP 4.3.5 überprüft.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #11 (permalink)  
Alt 29-04-2008, 23:29
waYan
 Newbie
Links : Onlinestatus : waYan ist offline
Registriert seit: Aug 2007
Beiträge: 9
waYan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mhhh... hat es vielleicht mit der unterschiedlichen PCRE Library Version zu tun? Kann ja dann laut PHP-Manual auch nicht sein, da es sich ja um ein zusätzliches Feature handelt.

@tontechniker

auf welchem OS hast Du das denn ausprobiert. Wie gesagt bei mir local auf WIN XP PHP Version 5.2.5 funktioniert das auch bestens.

Unter Linux, egal ob CentOS, Fedora, Debian, geht es einfach nicht. Vielleicht sollte ich das ganze mal in einem Linux-Systemadmin- Forum schildern...


greeTz
waYan
Mit Zitat antworten
  #12 (permalink)  
Alt 01-05-2008, 12:19
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
auf welchem OS hast Du das denn ausprobiert. Wie gesagt bei mir local auf WIN XP PHP Version 5.2.5 funktioniert das auch bestens.
OS X also Unix und Gentoo.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:07 Uhr.