function UberTrim($s) {
$s = preg_replace('/\xA0/u', ' ', $s); // strips UTF-8 NBSP: "\xC2\xA0"
$s = trim($s);
return $s;
}
Kódování znaků UTF-8 pro mezeru bez přerušení, Unicode (U+00A0), je 2bajtová sekvence
C2
A0
. Pokusil jsem se použít druhý parametr k trim()
ale to nepomohlo. Příklad použití:
assert("abc" === UberTrim(" \r\n \xc2\xa0 abc \t \xc2\xa0 "));
Náhrada MySQL za TRIM(text_field)
který také odstraňuje mezery bez přerušení UTF díky komentáři @RudolfRein:
TRIM(REPLACE(text_field, '\xc2\xa0', ' '))
Kontrolní seznam UTF-8:
(další kontroly zde )
-
Ujistěte se, že máte PHP je zde editor zdrojového kódu Režim UTF-8 bez kusovníku . Nebo nastavte v předvolbách .
-
Ujistěte se, že máte MySQL klient je nastaven na kódování znaků UTF-8 (více zde a zde ), např.
$pdo = new PDO('mysql:host=...;dbname=...;charset=utf8',$userid,$password);
$pdo->exec("SET CHARACTER SET utf8");
-
Zkontrolujte, zda máte HTTP server je nastaven na UTF-8, např. pro Apache :
AddDefaultCharset UTF-8
-
Ujistěte se, že prohlížeč očekává UTF-8.
header('Content-Type: text/html; charset=utf-8');
nebo
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />