0

I am using a server-side PHP to call an API and return its content read by a client-side JS XMLHttpRequest(). The problem is, my PHP is returning letters like á as á. Here's the snippet of PHP that's causing this:

$dom = new DOMDocument;
$dom->loadHTML($meaning);
    foreach ($dom->getElementsByTagName('a') as $node) {
        $link_text =  $node->nodeValue;
        $link_href = $node->getAttribute('href');
        if (strpos($link_href,'www.somelink.com/something/') !== false) {
            $node->setAttribute('href', 'http://localhost:8888/a-s/#/mylink/' . $link_text);
        }
    }
echo $dom->saveHTML();

Taking cue from a couple of answers on similar questions on SO, I tried using HTMLEntities like so:

echo htmlentities($dom->saveHTML(), ENT_QUOTES, 'ISO-8859-15');

However, this further garbled up the output. What this did was throw the entire result in a raw xml format devoid of all formatting. What earlier looked like this:

enter image description here

Now looks like this:

enter image description here

Funny thing is, when I don't use HTMLEntities(), only the first instance of á gets rendered as á. If you look at the first image, the second instance onward, á is rendered as á without any problem!

1 Answer 1

1

Add this to your code before outputting:

utf8_decode();
echo $dom->saveHTML();
Sign up to request clarification or add additional context in comments.

4 Comments

This doesn't change the output at all. The problem stands.
Nope! On your php page before the echo $dom->saveHTML(); statement.
Did just that but the output still renders as á. Also, like I said in the question, it's only the first á that's getting rendered incorrectly. Any subsequent occurrence comes just fine.
Okay, finally I got it to work. I just had to add a <?xml version="1.0" encoding="ISO-8859-15"?> to the top of my document. Thank you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.