4

I want to get the first character of a string in PHP. But it returns some unknown character like . Why does that happen?

$text = "अच्छी ाqस्थति में"; // Hindi String 
$char = $text[0];   // $text{0}; also try here .
echo $char;   // output like �

//expected Output अ

//Below code also used
$char = substr($text , 0 , 1);  // Getting same output

If I used javascript I found that I get perfect output:

var text = "अच्छी ाqस्थति में"; // Hindi String 
var char = text.charAt(0);
console.log(char)   // output like अ

Please anyone tell me about that and a solution to this problem? Why these error if charAt & substr work the same way?

smottt
  • 3,091
  • 11
  • 37
  • 42
Gunjan Patel
  • 2,120
  • 3
  • 20
  • 40

1 Answers1

13

You should use mbstring for unicode strings.

$char = mb_substr($text, 0, 1, 'UTF-8'); // output अ

You can replace 'UTF-8' with any other encoding, if you need it.

PHP does not support unicode by default. Do note that you need mbstring enabled if you want to use this. You can check by checking if extension is loaded:

if (extension_loaded('mbstring')) {
    // mbstring loaded
}
smottt
  • 3,091
  • 11
  • 37
  • 42