Удалите этих нежелательных персонажей с помощью php - PullRequest
0 голосов
/ 13 марта 2012

Как я могу удалить этих нежелательных символов, таких как ?

Я уже установил кодировку символов в utf-8, но все же эти символы появляются.

Если человек скопирует текст из слова и вставит его в TinyMCE, нежелательные символы не появятся перед сохранением его в БД. При сохранении и извлечении из БД появляются нежелательные символы.

Вот мой текущий код для фильтрации:

$content = htmlentities(@iconv("UTF-8", "ISO-8859-1//IGNORE", $content));

Использование этого хорошо, но некоторые нежелательные символы не полностью отфильтрованы.

Ответы [ 4 ]

1 голос
/ 13 марта 2012

Вы можете удалить эти символы, просто не выводя их - да, это работает.

Если вам нужна более конкретная рекомендация, тогда вам нужно быть более конкретным со своим вопросом.Вы только что поделились некоторой информацией:

Я уже установил кодировку символов в utf-8

Отсутствует какая кодировка символовприменяется.Это выход?Это сама строка (где-то должна быть какая-то строка)?Это входные данные?

Вам необходимо: а) поделиться своим кодом, чтобы выяснить причину этого, б) поделиться кодировкой любой строки, связанной с вашим кодом.

0 голосов
/ 14 марта 2012

Вот несколько способов убрать нежелательных персонажей, которых я использовал в прошлом. (имейте в виду, что я делаю mysql_real_escape_string, когда делаю вещи mysql.

//////////////////////////////////////////////////////////////////////////////////
// FUNCTION:     cleaner
// DESCRIPTION: Used mainly to clean large chunks of copy and pasted copy from 
//              word and on macs
//////////////////////////////////////////////////////////////////////////////////
function cleaner($some_var){
  $find[]    = '“';  // left side double smart quote
  $find[]    = 'â€';   // right side double smart quote
  $find[]    = '‘';   // left side single smart quote
  $find[]    = '’';  // right side single smart quote
  $find[]    = '…';  // elipsis
  $find[]    = 'â€"';  // em dash
  $find[]    = 'â€"';  // en dash
  $replace[] = '"';
  $replace[] = '"';
  $replace[] = "'";
  $replace[] = "'";
  $replace[] = "...";
  $replace[] = "-";
  $replace[] = "-";

  return(str_replace($find, $replace, trim($some_var)));
} 

//////////////////////////////////////////////////////////////////////////////////
// FUNCTION:     strip_accents
// DESCRIPTION: Used to replace all characters shown below
//////////////////////////////////////////////////////////////////////////////////
function strip_accents($some_var){ 
  return strtr($some_var, 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY'); 
}

//////////////////////////////////////////////////////////////////////////////////
// FUNCTION:     clean_text
// DESCRIPTION: Used to replace all characters but the below
//////////////////////////////////////////////////////////////////////////////////
function clean_text($some_var){
  $new_string = ereg_replace("[^A-Za-z0-9:/.' @-]", "", strip_accents(trim($some_var))); 
  return $new_string;
}

//////////////////////////////////////////////////////////////////////////////////
// FUNCTION:     clean_url
// DESCRIPTION: Strips all non alpha-numeric values from a field and formats the 
//              variable into a URL friendly variable
//////////////////////////////////////////////////////////////////////////////////
function clean_url($var){
    $find[]    = " ";
    $find[]    = "&";
    $replace[] = "-";
    $replace[] = "-and-";

  $new_string = preg_replace("/[^a-zA-Z0-9\-s]/", "", str_replace($find, $replace, strtolower(strip_accents(trim($var)))));
  return($new_string);
}

//////////////////////////////////////////////////////////////////////////////////
// FUNCTION:     post_cleaner
// DESCRIPTION: Another scrubber to remove tags and clean post data
//////////////////////////////////////////////////////////////////////////////////
function post_cleaner($var, $max = 75, $case="default"){
  switch($case):
    case "email":
      break;

    case "money":
      $var = ereg_replace("[^0-9. -]", "", strip_accents(trim($var))); 
      break;

    case "number":
      $var = ereg_replace("[^0-9. -]", "", strip_accents(trim($var))); 
      break;

    case "name":
      $var = ereg_replace("[^A-Za-z0-9/.' @-]", "", strip_accents(trim($var))); 
      $var = ucwords($var); 
      break;

    default:
      // $var = trim($var);
      // $var = htmlspecialchars($var);
      // $var = mysql_real_escape_string($var);
      // $var = substr($var, 0, $max);
      $var = substr(clean_text($var), 0, $max);
  endswitch;

  return $var;
}

Это всего лишь несколько способов очистки текста. Возьми что хочешь от него. Надеюсь, это поможет.

0 голосов
/ 13 марта 2012

Почему бы тебе просто не поработать задом наперед?Удалите все символы «не слова» с помощью этого регулярного выражения:

$cleanStr = preg_replace('/\W/', '', $yourInput);

В качестве альтернативы, вы можете быть более точным с '/[^a-zA-Z0-9_]/', но /W представляет этот блок.

0 голосов
/ 13 марта 2012

может быть с str_replace()?Я не вижу символы, которые вы используете.

$badChars = array('$', '@', '~', 'R', '¬');

str_replace($badChars, '', $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...