note 113143 added to class.sqlite3

From: Date: Thu, 05 Sep 2013 04:06:35 +0000
Subject: note 113143 added to class.sqlite3
Groups: php.notes 
Request: Send a blank email to php-notes+get-196168@lists.php.net to get a copy of this message
There is an undocumented method "createCollation" in this class, as reported on https://bugs.php.net/bug.php?id=65216 The syntax of the method is similar to usort for example: createCollation(collation_name, callback) The callback function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second. Here is one example of use to collate unicode text as ASCII, so that for example in french Émilie will be ordered just after Emile and not after Zebra like it's the case with the default BINARY collation. This requires the "intl" module to be installed, see PHP doc for details (or apt-get install php5-intl in deb based distros). <?php $db = new SQLite3(':memory:'); $db->createCollation('translit_ascii', function ($a, $b) { $a = transliterator_transliterate('Any-Latin; Latin-ASCII; Lower()', $a); $b = transliterator_transliterate('Any-Latin; Latin-ASCII; Lower()', $b); return strcmp($a, $b); }); $db->exec(' CREATE TABLE people (name COLLATE translit_ascii); INSERT INTO people VALUES ("Émilie"); INSERT INTO people VALUES ("Zebra"); INSERT INTO people VALUES ("Emile"); INSERT INTO people VALUES ("Arthur"); '); $stmt = $db->prepare('SELECT name FROM people ORDER BY name;'); $result = $stmt->execute(); while ($row = $result->fetchArray()) { echo $row['name'] . PHP_EOL; } // Displays: // Arthur // Emile // Émilie // Zebra ?> ---- Server IP: 113.20.13.217 Probable Submitter: 220.237.28.194 ---- Manual Page -- http://php.net/manual/en/class.sqlite3.php Edit -- https://master.php.net/note/edit/113143 Del: integrated -- https://master.php.net/note/delete/113143/integrated Del: useless -- https://master.php.net/note/delete/113143/useless Del: bad code -- https://master.php.net/note/delete/113143/bad+code Del: spam -- https://master.php.net/note/delete/113143/spam Del: non-english -- https://master.php.net/note/delete/113143/non-english Del: in docs -- https://master.php.net/note/delete/113143/in+docs Del: other reasons-- https://master.php.net/note/delete/113143 Reject -- https://master.php.net/note/reject/113143 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#196168) next »