Что это за символ () и как мне удалить его с помощью PHP? - PullRequest
15 голосов
/ 25 августа 2011

Это заглавная буква A с ^ сверху: Â

Она отображается в строках, извлеченных из веб-страниц.Он показывает, где ранее было пустое место в исходной строке на исходном сайте.Это фактический символ, который хранится в моей базе данных.Это также то, что отображается на моем веб-сайте, когда я отображаю строку, содержащую ее.

Я понимаю, что это проблема кодировки символов, когда я первоначально обрабатывал веб-страницу, но теперь я застрял с этими символами в моей базе данных.Я должен преобразовать этот символ, когда он отображается, или где-то еще в php, прежде чем выводить HTML, который содержит его.Я не могу обработать исходные документы.

Я пробовал str_replace () и html_entity_decode () и ничего не делал.

Что еще мне следует попробовать?

Ответы [ 8 ]

19 голосов
/ 25 августа 2011

«Латинская 1» - это ваша проблема здесь. Для веб-страницы доступно около 65256 символов UTF-8, которые нельзя сохранить на кодовой странице Latin-1.

Для вашей непосредственной проблемы вы должны быть в состоянии

$clean = str_replace(chr(194)," ",$dirty)

Однако я бы переключил вашу базу данных на использование utf-8 как можно скорее, поскольку проблема почти наверняка возникнет снова.

7 голосов
/ 06 сентября 2017

Это работает для меня:

$string = "Sentence ‘not-critical’ and \n sorting ‘not-critical’ or this \r and some ‘not-critical’ more. ' ! -.";
$output = preg_replace('/[^(\x20-\x7F)\x0A\x0D]*/','', $string);
7 голосов
/ 25 августа 2011

На самом деле это не один символ, и, скорее всего, это вызвано несовпадением кодировки содержимого и кодировки браузера. Попробуйте установить кодировку вашей выводимой страницы на то, что вы используете.

например. В разделе выведите:

echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";

(Настройте UTF-8 на то, что вы используете)

3 голосов
/ 22 февраля 2017

Я использую это много

function cleanStr($value){
    $value = str_replace('Â', '', $value);
    $value = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value);
    return $value;
}
0 голосов
/ 09 июля 2019

Чтобы удалить символ из строки

mysqli_set_charset ($ жулик, "utf8");

$ цена = "Ђ 250,00";

$ price2 = preg_replace ('/ [^ (\ x20- \ x7F)] * /', '', $ price);

Результат: 250,00

0 голосов
/ 30 апреля 2019

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

    <--!DOCTYPE html--> 
    <--html lang="en-US"-->
    <--head-->
    <--meta charset="utf-8"-->   
    <--meta http-equiv="X-UA-Compatible" content="IE=edge"--> 
    <--meta name="viewport" content="width=device-width, initial-scale=1"--> 
    <--meta http-equiv="Content-Type" content="text/html; charset=utf-8/" /--> 
0 голосов
/ 22 февраля 2017

Эта проблема возникает при использовании другой кодировки в вашем Интернете.

Чтобы решить эту проблему (используя utf-8 в примерах):

в <HEAD> вашей страницы добавьте charset:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

В любой отправляемой вами форме добавьте accept-charset:

<form name="..." method=".." id=".."  accept-charset="utf-8">

Если вы используете php + MySQLi для обработки вашей формы, вы должны убедиться, что соединение с базой данных также поддерживает вашу кодировку. Процедурный стиль:

mysqli_set_charset($link, "utf8");

и объектно-ориентированный стиль:

$mysqli->set_charset("utf8")
0 голосов
/ 29 мая 2014

Используйте сильфонные коды

echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
echo htmlspecialchars_decode($your_string, ENT_QUOTES);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...