Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In PHP substring return �� these type of character?

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?

like image 990
Gunjan Patel Avatar asked Dec 12 '22 02:12

Gunjan Patel


1 Answers

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
}
like image 155
smottt Avatar answered Dec 22 '22 10:12

smottt