<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>str-word-count &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/str-word-count/</link>
	<description>Feed of posts on WordPress.com tagged "str-word-count"</description>
	<pubDate>Tue, 01 Dec 2009 00:06:29 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[PHP und UTF-8]]></title>
<link>http://webzeug.wordpress.com/2007/12/14/php-und-utf-8/</link>
<pubDate>Fri, 14 Dec 2007 20:06:41 +0000</pubDate>
<dc:creator>webzeug</dc:creator>
<guid>http://webzeug.wordpress.com/2007/12/14/php-und-utf-8/</guid>
<description><![CDATA[Die Programmiersprache PHP verarbeitet bis Version 5 nur 1-Byte-Zeichen. Strings, die etwa UTF-8 cod]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Die Programmiersprache PHP verarbeitet bis Version 5 nur 1-Byte-Zeichen. Strings, die etwa UTF-8 codierte Zeichen enthalten, werden von den <a href="http://www.php.net/manual/de/ref.strings.php">Standart-Stringfunktionen</a> oft fehlerhaft verarbeitet.</p>
<p>Die Funktion <a href="http://www.php.net/manual/de/function.utf8-decode.php">utf8_decode()</a> bietet eine rudimentäre Möglichkeit, UTF-8 Strings in 1-Byte-Strings zu konvertieren. Dabei kann allerdings Informationsverlust auftreten.<br />
Mit den <a href="http://www.php.net/manual/de/ref.mbstring.php">Multibyte-Stringfunktionen</a> bietet PHP allerdings eine mächtige Methodensammlung, um etwa UTF-8-Strings zu verarbeiten. Mit Hilfe von Regular-Expressions können damit die meisten Stringmanipulationen geleistet werden. PHP muss, um die Multibyte-Stringfunktionen nutzen zu können, mit der mbstring-Erweiterung kompiliert werden.</p>
<p>Eine Alternative bietet die <a href="http://dev.splitbrain.org/view/darcs/dokuwiki/inc/utf8.php">Scriptsammlung der splitbrain-Entwickler</a>, deren Funktionen klassische Stringfunktionen <a href="http://www.sitepoint.com/blogs/2006/08/10/hot-php-utf-8-tips/">simmulieren</a> und dabei UTF-8-Strings verarbeiten können, ohne auf die mbstring-Erweiterung angewiesen zu sein.</p>
<p>Da die Sammlung keinen Ersatz für str_word_count() enthält, habe ich mal einen geschrieben.<br />
utf8_str_word_count():<br />
<code><br />
/**<br />
* Works like str_word_count() for UTF8-strings<br />
* does not support locale information<br />
* does not exclude "'" or "" on beginning of a word<br />
* may behave strange if $format is not 0, 1 or 2<br />
*/<br />
function utf8_str_word_count($string,$format=0,$charlist='') {<br />
  $array = preg_split("/[^'\-A-Za-z".$charlist."]+/u",$string,-1,PREG_SPLIT_NO_EMPTY);<br />
  switch ($format) {<br />
    case 0:<br />
      return(count($array));<br />
    case 1:<br />
      return($array);<br />
    case 2:<br />
      $pos = 0;<br />
      foreach ($array as $value) {<br />
        $pos = utf8_strpos($string,$value,$pos);<br />
        $posarray[$pos] = $value;<br />
        $pos += utf8_strlen($value);<br />
      }<br />
      return($posarray);<br />
  }<br />
}<br />
</code></p>
<p>Achtung, die Funktion verwendet weitere UTF-8-Funktionen (utf8_strpos und utf8_strlen) aus der <a href="http://dev.splitbrain.org/view/darcs/dokuwiki/inc/utf8.php">Scriptsammlung von splitbrain</a>.</p>
<p>Die Entstehung dieser Funktion ist in <a href="http://www.selfphp.de/forum/showthread.php?s=aa2a2811f70e94a042c9049c6f5cddbe&#38;p=109780#post109780">diesem Forenbeitrag</a> dokumentiert.</p>
<p>Auf nicknettleton gibts noch <a href="http://www.nicknettleton.com/zine/php/php-utf-8-cheatsheet">wichtige Tipps</a>, um das gesamte System inkl. Datenbank auf UFT-8 umzustellen.</p>
<p>Ein String ist eine Folge von Zeichen. Dieser kann von einer Programmiersprache in Variablen gespeichert und  mittels Funktionen weiter verarbeitet werden.<br />
Es gibt allerdings unterschiedliche Arten, wie Zeichen abgespeichert werden, <a href="http://www.sitepoint.com/blogs/2006/03/15/do-you-know-your-character-encodings/">character encodings</a> genannt. Ist ein String etwa als ASCII gespeichert, können darin nur Zeichen aus der ASCII-Zeichentabelle verwendet werden. Jedes Zeichen nimmt dabei ein Byte Speicherplatz ein.</p>
<p>Da in den Sprachen der Welt eine <a href="http://www.joelonsoftware.com/articles/Unicode.html">Fülle verschiedenster Zeichen</a> zur Anwendung kommen, wurden zur Standartisierung der Speicherung zunächst der ISO-Standart, später Unicode entwickelt.<br />
UTF-8 ist der aktuelle Standart zur Speicherung von Zeichen. Er enthält eine Vielzahl von Zeichen aus vielen Sprachen. Zur Speicherung werden ein bis acht Byte verwendet.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
