J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
5138 links
Si l'on souhaite ordonner de façon naturelle une colonne avec sqlite (c'est à dire en prenant en compte les accents et les nombres), il y a deux petits hacks à appliquer.
Le premier consiste à transformer la valeur en décimal, ce qui donne le code :
CAST(colonne AS DECIMAL)
Le deuxième est de créer une fonction sqlite via pdo, qui va prendre en compte la langue utilisée (ici, le français et ses accents). Cette fonction est à écrire en amont de la requête :
$pdo->sqliteCreateFunction('locale',
function ($data, $locale = 'root')
{
static $collators = array();
if (isset($collators[$locale]) !== true)
{
$collators[$locale] = new \Collator($locale);
}
return $collators[$locale]->getSortKey($data);
}
);
Ainsi, la recherche dans sqlite va donner :
SELECT * FROM matable WHERE id!=? ORDER BY CAST(macolonne AS DECIMAL), locale(macolonne, 'fr-FR')
On peut également utiliser une autre langue pour le même résultat.
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (search instanceof RegExp) {
throw TypeError('first argument must not be a RegExp');
}
if (start === undefined) { start = 0; }
return this.indexOf(search, start) !== -1;
};
}
const str = "Être ou ne pas être, telle est la question.";
console.log(str.includes("Être")); // true
console.log(str.includes("question")); // true
console.log(str.includes("pléonasme")); // false
console.log(str.includes("Être", 1)); // false
console.log(str.includes("ÊTRE")); // false
console.log(str.includes("")); // true
Petite classe bien utile qui permet entre autre, de transformer un chiffre en texte :
$value = 12;
echo numfmt_create('fr_FR', \NumberFormatter::SPELLOUT)->format($value);
// Affichera "douze"
En fait, c'est quasi toutes les fonctions php utiles :D