ottengo una stringa UTF-8 dal db, e cercando di eco il suo primo carattere:Ottenere primo carattere della stringa UTF-8
$ title = $ modello-> titolo; echo $ title [0];
Ottengo:
Cosa c'è che non va? Grazie!
ottengo una stringa UTF-8 dal db, e cercando di eco il suo primo carattere:Ottenere primo carattere della stringa UTF-8
$ title = $ modello-> titolo; echo $ title [0];
Ottengo:
Cosa c'è che non va? Grazie!
Ci sono diverse cose che dovete considerare:
hth
$first_char = mb_substr($title, 0, 1);
è necessario utilizzare le funzioni di stringa multibyte di PHP per gestire correttamente le stringhe Unicode:
http://www.php.net/manual/en/ref.mbstring.php
http://www.php.net/manual/en/function.mb-substr.php
È inoltre necessario specificare la codifica dei caratteri nella <head>
della vostra HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
o:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-16" />
echo mb_substr ($ titolo, 0, 1); Risultato: –
mb_substr non aiuta –
Puoi pubblicare la stringa completa qui? –
stringhe PHP non capisce le stringhe multibyte per impostazione predefinita, l'array come indicizzazione taglierà del primo byte e se capita di non essere nel range ascii si ottiene questo risultato.
Utilizzare il metodo mb_substr.
Come già detto in altre questioni, con PHP, quando si cerca di ottenere una stringa, non capisce i caratteri multibyte (come si ottiene con UTF8 per esempio).
Quali le altre risposte non menzionano è che si dovrebbe suggerire la codifica che si desidera utilizzare per il mb_substr
Così, per esempio, io uso questo:
mb_substr("Sunday", 0, 1,'UTF8'); // Returns S
mb_substr("воскресенье", 0, 1,'UTF8'); // Returns в
Non ha funzionato per me senza il parametro 'UTF8'. Grazie! – PiTheNumber
+1 per aver menzionato la codifica del DB e' mb_internal_encoding' –
... e come menzionato nelle altre due risposte dovresti usare 'mb_substr' –
mb_internal_encoding ("UTF-8"); - Funziona bene! grazie! –