The string $chain is in the same character encoding as the characters in the array - it's possible, even likely, that the $first_name string is in a different encoding, and so those characters don't match. You might want to try using the multibyte string functions instead.
Try mb_convert_encoding. You might also want to try using HTML_ENTITIES as the to_encoding parameter, then you don't need to worry about how the characters will get converted - it will be very predictable.
Assuming your input to this script is in UTF-8, probably not a bad place to start...
$first_name = mb_convert_encoding($first_name, "HTML-ENTITIES", "UTF-8");