{"id":623,"date":"2011-10-31T23:35:37","date_gmt":"2011-10-31T22:35:37","guid":{"rendered":"https:\/\/d-mueller.de\/blog\/?p=623"},"modified":"2011-10-31T23:35:37","modified_gmt":"2011-10-31T22:35:37","slug":"php-wtf-7","status":"publish","type":"post","link":"https:\/\/d-mueller.de\/blog\/php-wtf-7\/","title":{"rendered":"PHP WTF #7"},"content":{"rendered":"<p>Direkt entliehen von <a href=\"http:\/\/www.codenaschereien.de\/php\/php-string-klasse\/\">hier<\/a> und ein sch\u00f6nes Beispiel f\u00fcr PHPs Handling mit Unicode-Zeichen:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\n&lt;meta charset=&quot;utf8&quot;&gt;\r\n&lt;?php\r\n$a = &#039;\u00e4a&#039;;\r\necho &quot;with space: &quot; . $a[0] . &quot; &quot; . $a[1] . &quot;&lt;br \/&gt;&quot;;  \/\/\ufffd \ufffd\r\necho &quot;without space: &quot; . $a[0] . $a[1] . &quot;&lt;br \/&gt;&quot;; \/\/\u00e4\r\n<\/pre>\n<p>bzw. analog dazu:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\n&lt;meta charset=&quot;utf8&quot;&gt;\r\n&lt;?php\r\n$a = &#039;\u00e4a&#039;;\r\necho &quot;substr 0,1: &quot; . substr($a, 0, 1) . &quot;&lt;br \/&gt;&quot;; \/\/\ufffd\r\necho &quot;substr 0,2: &quot; . substr($a, 0, 2) . &quot;&lt;br \/&gt;&quot;; \/\/\u00e4\r\n<\/pre>\n<p>Klar: Das <i>\u00e4<\/i> belegt 2 Byte:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\n&lt;?php\r\n$a = &#039;\u00e4a&#039;;\r\necho &quot;strlen: &quot; . strlen($a) . &quot;&lt;br \/&gt;&quot;; \/\/3\r\necho &quot;mb_strlen: &quot; . mb_strlen($a, &quot;UTF-8&quot;) . &quot;&lt;br \/&gt;&quot;; \/\/2\r\n<\/pre>\n<p>Schon besser:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">\r\n&lt;meta charset=&quot;utf8&quot;&gt;\r\n&lt;?php\r\n$a = &#039;\u00e4a&#039;;\r\necho &quot;mb_substr 0,1: &quot; . mb_substr($a, 0, 1, &quot;UTF-8&quot;) . &quot;&lt;br \/&gt;&quot;; \/\/\u00e4\r\necho &quot;mb_substr 0,2: &quot; . mb_substr($a, 0, 2, &quot;UTF-8&quot;) . &quot;&lt;br \/&gt;&quot;; \/\/\u00e4a\r\n<\/pre>\n<p>Mir war das zwar im Prinzip schon alles klar, durch so ein Beispiel wird aber nochmal deutlich, dass man die nicht-mb_* &#8211; Funktionen partout meiden sollte.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Direkt entliehen von hier und ein sch\u00f6nes Beispiel f\u00fcr PHPs Handling mit Unicode-Zeichen: &lt;meta charset=&quot;utf8&quot;&gt; &lt;?php $a = &#039;\u00e4a&#039;; echo &quot;with space: &quot; . $a[0] . &quot; &quot; . $a[1] . &quot;&lt;br \/&gt;&quot;; \/\/\ufffd \ufffd echo &quot;without space: &quot; . &hellip; <a href=\"https:\/\/d-mueller.de\/blog\/php-wtf-7\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,14,3],"tags":[],"class_list":["post-623","post","type-post","status-publish","format-standard","hentry","category-php","category-php-wtf","category-webdev"],"_links":{"self":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/comments?post=623"}],"version-history":[{"count":0,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/623\/revisions"}],"wp:attachment":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/media?parent=623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/categories?post=623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/tags?post=623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}