Last active
October 21, 2016 11:05
-
-
Save MasterHans/638177eddba7b7f59b7b5c76d4b8b518 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. UTF-8 at the PHP level | |
mb_strpos() and mb_strlen() | |
mb_internal_encoding() | |
the mb_http_output() | |
<?php | |
// Tell PHP that we're using UTF-8 strings until the end of the script | |
mb_internal_encoding('UTF-8'); | |
// Tell PHP that we'll be outputting UTF-8 to the browser | |
mb_http_output('UTF-8'); | |
// Our UTF-8 test string | |
$string = 'Êl síla erin lû e-govaned vîn.'; | |
// Transform the string in some way with a multibyte function | |
// Note how we cut the string at a non-Ascii character for demonstration purposes | |
$string = mb_substr($string, 0, 15); | |
// Connect to a database to store the transformed string | |
// See the PDO example in this document for more information | |
// Note that we define the character set as utf8mb4 in the PDO connection string | |
$link = new \PDO( 'mysql:host=your-hostname;dbname=your-db;charset=utf8mb4', | |
'your-username', | |
'your-password', | |
array( | |
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, | |
\PDO::ATTR_PERSISTENT => false | |
) | |
); | |
// Store our transformed string as UTF-8 in our database | |
// Your DB and tables are in the utf8mb4 character set and collation, right? | |
$handle = $link->prepare('insert into ElvishSentences (Id, Body) values (?, ?)'); | |
$handle->bindValue(1, 1, PDO::PARAM_INT); | |
$handle->bindValue(2, $string); | |
$handle->execute(); | |
// Retrieve the string we just stored to prove it was stored correctly | |
$handle = $link->prepare('select * from ElvishSentences where Id = ?'); | |
$handle->bindValue(1, 1, PDO::PARAM_INT); | |
$handle->execute(); | |
// Store the result into an object that we'll output later in our HTML | |
$result = $handle->fetchAll(\PDO::FETCH_OBJ); | |
?><!doctype html> | |
<html> | |
<head> | |
<meta charset="UTF-8" /> | |
<title>UTF-8 test page</title> | |
</head> | |
<body> | |
<?php | |
foreach($result as $row){ | |
print($row->Body); // This should correctly output our transformed UTF-8 string to the browser | |
} | |
?> | |
</body> | |
</html> | |
2. Composer: | |
patchwork/utf8 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment