I have a php code as shown below:
$variable = \\CTIME\\DataPoint\\get_message(); // Line A
echo \'\'; print_r($variable); echo \
You have an encoding mismatch, and I will wager that it's between UTF-8 and MS cp1252.
cp1252 is a single-byte encoding that Microsoft uses, and is frequently confused with ISO8859-1. While many of the codepoints map to the same glyphs in both, there are some notable differences like ’
that give it away as it only occurs in cp1252.
If you look at the byte values of strings you'll see:
\x92
\xE2\x80\x99
Which is why you're having trouble matching.
You're going to want to make this post your new religion: UTF-8 all the way through
Without re-hashing that gospel truth, my over-arching recommendations on dealing with character encodings are:
utf8_encode()
or utf8_decode()
.
Your code seems good.
My guess is that this is a charset issue: the "right single quotation mark" (’) is a unicode char and is not part of ASCII charset.
If the string from the source data and the string in your PHP script use a distinct charset, they might be different (not the same sequence of bytes).
For instance, if you're using UTF-8: check that the data you're fetching with get_live_today_streams()
is UTF-8 encoded, and make sure that your .php
file is UTF-8 encoded as well.
(Have a look at this post to see how to convert a ANSI file to UTF-8 using notepad++)
If your string always contains Hello and Aujourd hui, use this regex workaround - notice the u
flag that makes it multibyte compatible to match the dash and quote characters with a dot.
https://3v4l.org/Xe0Rg