2013-09-19 6 views
0

Привет, я использую php, мне нужно сравнить данные из моего массива и данные из прочитанного кода. Но у меня проблема с кодировкой html. Пример из моего массива:HTML-кодирование и PHP

"osiemnaście" => 18, 

и данные искаженного:

osiemnaście 

Как сравнить эти данные? Я уже пробовал «html_entity_decode()», но результатов не было.

+3

Рассмотрите возможность использования символов с акцентом для карт с капканом, эти вещи уже могут быть достаточно сложными, не вычисляя, что случайные точки полета являются частью текста. – Havenard

ответ

1

Для того, чтобы декодировать шестигранные примитивы, которые вы должны будете работать это немного, так как PHP встроенного в функции не покрывает их.

$string = "osiemnaście"; 
$string = preg_replace('/\&\#x([a-fA-F0-9]+)\;/me', 'mb_convert_encoding("&#".hexdec("\\1").";", "UTF-8", "HTML-ENTITIES")', $string); 

// $string is now "osiemnaście" 

echo ($string == "osiemnaście") 
    ? "success" 
    : "failure"; 
+0

Перед тем как препродать: "pi & # x0119; & # x0107;" после: "pi" Я не знаю почему. – user2796493

+0

Ну, после некоторого исследования похоже, что сущности на самом деле являются юникодами (U + xxxx), но представлены как hex. – Daniel

+0

Я обновил альтернативу для преобразования кодировки unicode в html. Попробуйте мой ответ. – Daniel

0

Вы вариант должен был бы сделать это наоборот:

htmlentities("osiemnaście") == $captchainput 

Вы должны заботиться о своем File- и ввода-кодирования от HTMLDocument.

Вы можете определить DocumentEncoding с помощью PHP:

header('Content-Type: text/html; charset=utf-8'); 

или в HTML: <meta charset="utf-8" />

1

Похоже символьного набора вопроса/кодирования с характером, что акцентированные 'S'. Убедитесь, что вы устанавливаете UTF-8 как на сервере, так и на стороне HTML.

Это было некоторое время, так как я сделал много PHP, но эта функция может быть полезна: http://php.net/manual/en/function.mb-convert-encoding.php

Смежные вопросы