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 Thema bewerten
  #1 (permalink)  
Alt 02-02-2009, 16:46
itsmejake
 Newbie
Links : Onlinestatus : itsmejake ist offline
Registriert seit: Jan 2008
Beiträge: 7
itsmejake ist zur Zeit noch ein unbeschriebenes Blatt
Standard Umlaute und Regulärer Ausdruck

Hallo,
kann mit jemand erklären, warum das hier nicht funktioniert:

PHP-Code:
preg_match('/^(über |über: )/u',utf8_encode($value)) 
Es soll damit überprüft werden, ob am anfang des strings das wort "über" steht. Aber es gibt probleme mit dem Umlaut "ü". Damit die Überprüfung auf Umlaute funktioniert soll das ganze utf8 codiert sein. Aber irgendwie gibt es da probleme:

Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 3

hat jemand einen Ausweg parat?
Danke!

Geändert von itsmejake (02-02-2009 um 17:56 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 02-02-2009, 18:14
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

Deine Datei ist kein UTF-8. Entweder diesen Missstand ändern oder die Unicode-Zeichen über die Hexadezimalschreibweise angeben.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-02-2009, 20:50
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard Re: Umlaute und Regulärer Ausdruck

Zitat:
Original geschrieben von itsmejake
Hallo,
kann mit jemand erklären, warum das hier nicht funktioniert:

PHP-Code:
preg_match('/^(über |über: )/u',utf8_encode($value)) 
Das geht effektiver (sprich: schneller):
PHP-Code:
preg_match('/^über:? /u'utf8_encode($value)); 
Zitat:
Es soll damit überprüft werden, ob am anfang des strings das wort "über" steht. Aber es gibt probleme mit dem Umlaut "ü". Damit die Überprüfung auf Umlaute funktioniert soll das ganze utf8 codiert sein.
Warum? Du wandelst den zu durchsuchenden String erst von ISO-Latin-1 in UTF-8, um ihn dann zu durchsuchen. Das ist umständlich. Du solltest die UTF-8-Funktionalität der PCRE-Befehle benutzen, wenn sie auch wirklich benötigt wird. So lange dein $value aber ISO-LATIN-1 enthält (oder eine andere 8-Bit-Kodierung), ist das unnötig. Daher genügt:
PHP-Code:
preg_match('/^über:? /'$value); 
Das ist schneller und geht mit dem Hauptspeicher sparsamer um.

Zitat:
Aber irgendwie gibt es da probleme:

Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 3
Auf "Offset 3" steht dein "ü". Also ist höchstwahrscheinlich deine Quelltext-Datei nicht UTF-8-kodiert. Das kannst du bspw. mit einem Hex-Viewer/-Editor prüfen -- dann müsste das "ü" nämlich aus zwei Bytes bestehen.

Wenn du dem Rat von PHP-Desaster folgst, dann denke daran, dass UTF-Zeichen in PCRE so kodiert werden:

PHP-Code:
preg_match('/^\x{0fc}ber:? /u'utf8_encode($value)); 
Mit Zitat antworten
  #4 (permalink)  
Alt 03-02-2009, 16:42
itsmejake
 Newbie
Links : Onlinestatus : itsmejake ist offline
Registriert seit: Jan 2008
Beiträge: 7
itsmejake ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo und Danke für die Antworten! Leider funktioniert weder:

PHP-Code:
preg_match('/^über:? /'$value); 
noch

PHP-Code:
preg_match('/^x{0fc}ber:? /u'utf8_encode($value)); 
jetzt gibt es zwar keine Fehlermeldung mehr aber der findet das "über:" einfach nicht?!?!? ergebnis ist immer "0"???

Wie sucht Ihr in einem String nach dem wort "über", so dass man auch an diesem Schlüsselwort splitten kann mit preg_split?

Das muss doch möglich sein??? ich bin verzweifelt!;-(
Mit Zitat antworten
  #5 (permalink)  
Alt 03-02-2009, 16:57
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von itsmejake
Wie sucht Ihr in einem String nach dem wort "über", so dass man auch an diesem Schlüsselwort splitten kann mit preg_split?
Ganz einfach - in dem ich beides (String, und Script welches den RegEx enthaelt) in der gleichen Zeichenkodierung abspeichere, so dass ich nicht Aepfel mit Birnen vergleiche, was du offenbar tust.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #6 (permalink)  
Alt 03-02-2009, 17:06
itsmejake
 Newbie
Links : Onlinestatus : itsmejake ist offline
Registriert seit: Jan 2008
Beiträge: 7
itsmejake ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kannst du mir auf die Sprünge helfen?

Das klingt logisch - hab aber keinen Ansatz.

Der String kommt aus einem Formular übergeben. Wenn ich ihn innerhalb des scripts deklariere funktioniert es aber eben nicht über das Formular:

PHP-Code:
$value="über:asdfgasdfkjgsdfkjgas"
(hier funktioniert es)


Thx!
Mit Zitat antworten
  #7 (permalink)  
Alt 03-02-2009, 17:17
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Und das Formular befindet sich in einem Dokument, welches mit der gleichen Zeichenkodierung gesendet und angezeigt wird?

Hat es irgendeine accept-charset-Angabe? (Sollte, wenn man konsequent und durchgehend eine Kodierung verwendet, eigentlich nicht noetig sein.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 03-02-2009, 17:24
itsmejake
 Newbie
Links : Onlinestatus : itsmejake ist offline
Registriert seit: Jan 2008
Beiträge: 7
itsmejake ist zur Zeit noch ein unbeschriebenes Blatt
Standard

JAu!

Habs nochmal überprüft. Aus irgendeinem Grund war die eine Datei als ANSI und die Andere utf-8 codiert!?!?!?

Wär aber nie drauf gekommen, dass das solch einen Fehler verursachen könnte!

DANKE!
Mit Zitat antworten
  #9 (permalink)  
Alt 03-02-2009, 17:35
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Schau dir die Kodierung an, in der die Seite gehalten ist, in der das Formular steht.

EDIT:

Ah schon erledigt.

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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:04 Uhr.