note 61648 added to function.split

From: Date: Wed, 08 Feb 2006 12:26:10 +0000
Subject: note 61648 added to function.split
Groups: php.notes 
Request: Send a blank email to php-notes+get-103305@lists.php.net to get a copy of this message
Original problem: ================= I've try using split function. <?php $ferro="2&#65533;12"; $valore=split("[&#65533;]",$ferro); echo $ferro."<br>"; echo "p1-".$valore[0]."<br>"; echo "p2-".$valore[1]."<br>"; echo "p3-".$valore[2]."<br>"; $ferro="2d12"; $valore=split("[d]",$ferro); echo $ferro."<br>"; echo "p1-".$valore[0]."<br>"; echo "p2-".$valore[1]."<br>"; echo "p3-".$valore[2]."<br>"; ?> This return: ============ 2&#65533;12 p1-2 p2- p3-12 2d12 p1-2 p2-12 p3- I use charset UTF-8. When I use char &#65533; the split function ad an empty string between "2" and "12"... Why? Explanation: ============ UTF-8 charset codes some characters (like the "&#65533;" character) into two bytes. In fact the regular expresion "[&#65533;]" contains 4 bytes (4 non-unicode characters). To demonstrate the real situation I wrote following example: $ferro="2de12"; $valore=split("[de]",$ferro); echo $ferro."<br>"; echo "p1-".$valore[0]."<br>"; echo "p2-".$valore[1]."<br>"; echo "p3-".$valore[2]."<br>"; This returns: ============= 2d12 p1-2 p2- p3-12 ---- Server IP: 62.65.181.66 Probable Submitter: 193.87.54.140 ---- Manual Page -- http://www.php.net/manual/en/function.split.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+61648 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+61648&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+61648&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#103305) next »