SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 24.10.2015, 12:04:57
Helmut Helmut ist offline
Anfänger
 
Registriert seit: Oct 2015
Alter: 50
Beiträge: 2
Sonderzeichen über String Index einfügen geht nich

Hallo zusammen,

ich hab folgendes Problem:

$strTest = 'á'; // Sonderzeichen a mit Akzent
echo $strTest;

funktioniert einwandfrei, das Sonderzeichen 'á' wird korrekt dargestellt (mit charset="utf-8")

Aber, folgendes funktioniert nicht:

$strTest = 'hallo';
$strTest[1] = 'á'; // Sonderzeichen über String Index ersetzen
echo $strTest;

Jetzt wird das Sonderzeichen 'á' nicht mehr korrekt dargestellt, es erscheint 'h�llo'

Weiß jemand, woran das liegt, bzw. wie man es korrigiert?
Wenn ich es mit String-Operatoren mache, also "substr" etc, geht es auch.
Ich würde aber eigentlich gerne den direkten Zugriff über den Index [] verwenden

vielen Dank
Helmut
Mit Zitat antworten
  #2  
Alt 24.10.2015, 16:35:54
Helmut Helmut ist offline
Anfänger
 
Registriert seit: Oct 2015
Alter: 50
Beiträge: 2
AW: Sonderzeichen über String Index einfügen geht nich

Also, ich glaub, ich hab es selbst gefunden.
Es geht nicht, da die Array-Notation für Strings nicht Multibyte-Aware ist.

PHP unterscheidet zwischen normalen ASCII Zeichen (0..127) und Extended ASCII Zeichen (128..255). Für die Extended ASCIIs (und darüber hinausgehende Kodierungen (etwa utf-8) gibt es die Multibyte Funktionen.


// So liefern die PHP Funktionen strLen und mb_strlen für nicht-extended ASCII Zeichen (0..127) den selben Wert:

$strTest = 'abc';
echo 'out1 = ' .strlen($strTest) .'<br>'; // result = 3
echo 'out2 = ' .mb_strlen($strTest) .'<br>'; // result = 3

// Für extended ASCII Zeichen (128..255), liefern strLen und mb_strlen aber unterschiedliche Werte:

$strTest = 'äöü';
echo 'out1 = ' .strlen($strTest) .'<br>'; // result = 6 (strlen zählt jetzt 2 Byte je Zeichen)
echo 'out2 = ' .mb_strlen($strTest) .'<br>'; // result = 3 (Multibyte-Length bleibt bei drei Byte)


Für Multibyte-Strings, kann man jetzt noch versuchen über die Array Notation 2 Bytes zu schreiben; für die normalen ASCIIs bekommt das hin (also z.B. $strTest[2] = ''; $strTest[3] = 'x'), aber für Sonderzeichen geht das schief.
Also werde ich wohl alle meine strlen, strpos und substr etc. durch die entsprechenden mb-Varianten ersetzen.

Wer das noch genauer wissen möchte, hier gibt es ein paar Links:
http://www.sitepoint.com/working-wit...ibyte-strings/

http://stackoverflow.com/questions/9...-string-in-php

http://iconoun.com/articles/collisions/
Mit Zitat antworten
Antwort

Stichworte
index, sonderzeichen, string, utf-8


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Passwort ohne Sonderzeichen juergen PHP Grundlagen 6 01.09.2010 16:18:03
Notice: undefined index Leyyin PHP Grundlagen 9 07.07.2010 12:59:19
DB Warnung mehr als ein INDEX abidmon MySQL/MySQLi 0 02.03.2008 10:56:37
sonderzeichen in tabelle einfügen p.dungel MySQL/MySQLi 2 08.09.2007 23:08:39
string einfügen Spower PHP Grundlagen 1 21.08.2004 09:26:11


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.


© 2001-2020 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt