I am scrapping data out of a file, from that data i’m getting the year out. When i try to convert that year (2011) to an int, i get a weird result (2). Here’s what my code looks like. $year is the value i am getting from the file.
$year_int = (int) $year;
var_dump($year); //Return string(8) "2011"
var_dump($year_int); //Return int(2)
I expect $year_int to be an int(2011).
And why is $year a string(8) shouldn’t it be a string(4)?
I reckon your string is UTF16-encoded, so each char is encoded with 16 bits, or 2 bytes. PHP still considers it a ASCII string, reads the 1st byte (
2), then the 2nd byte (zero char), and stops there.iconv('UTF-16', 'ASCII', $year)should helpEDIT I guessed that the string is in UTF16, because its characters, while being ASCII, took up 2 bytes each. Your string could be in one of the Asian two-byte encodings, but still most likely it’s Unicode, and you’re likely on Windows, because UTF16 is Windows’ internal encoding.
Here’s a good starter article on Unicode: http://www.joelonsoftware.com/articles/Unicode.html