|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #68303 str_split returns garbage when a certain UTF-8 character is passed
Submitted: 2014-10-24 20:07 UTC Modified: 2014-10-24 20:18 UTC
From: adrya dot stembridge at gmail dot com Assigned:
Status: Not a bug Package: Output Control
PHP Version: 5.6.2 OS: CentOS 6.5
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: adrya dot stembridge at gmail dot com
New email:
PHP Version: OS:


 [2014-10-24 20:07 UTC] adrya dot stembridge at gmail dot com
I am attempting to break up a string of initials in order to add periods after each letter. Ex, AMA becomes A.M.A.   I'm using str_split to generate an array, which I then glue together with periods. 

The problem is when I have a certain UTF8 character in the string: "ŞZ". str_split appears to not like the UTF8 encoding of the first letter. I've added some debug output in the code snippet below.  

Test script:
	$str_initials = "ŞZ";

	echo "<p><b>\$str_initials</b> $str_initials<p>";
	$arr_initials 	= str_split($str_initials);
	echo "<p>";
	foreach ($arr_initials as $initial)
		echo "<b>\$initial</b> $initial<br>";
		$arr_ni[] = $initial . '.';
	$str_initials = implode($arr_ni);

	echo "<p><b>\$str_initials</b> $str_initials";

Expected result:
ŞZ becomes Ş.Z.

Actual result:
ŞZ becomes �.�.Z.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2014-10-24 20:18 UTC]
-Status: Open +Status: Not a bug
 [2014-10-24 20:18 UTC]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at and the instructions on how to report
a bug at

str_split() isn't multibyte aware; describes a method of using preg_split() to implement a function similar to str_split() that is.
 [2014-10-24 20:34 UTC] php at requinix dot net
I don't normally critique code here but there's a much simpler way to do all that:
  $str_initials = preg_replace('/./u', '$0.', $str_initials);
(UTF-8 only)
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun May 26 12:01:29 2024 UTC