使用php删除这些不需要的字符


Remove these unwanted characters using php

如何删除这些不需要的字符�������?

我已经将字符编码设置为utf-8,但仍然会出现这些字符。

如果有人从word中复制文本并粘贴到TinyMCE上,则在将其保存到数据库之前,不需要的字符不会出现。当保存并从数据库中提取时,会出现不需要的字符。

这是我当前的过滤代码:

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

使用这个很好,但问题是一些不需要的字符没有被完全过滤掉。

您可以通过不输出这些字符来删除这些字符-是的,这很有效。

如果你需要一个更具体的指导方针,那么你需要对你的问题更具体。到目前为止,您只分享了一些信息:

我已经将字符编码设置为utf-8

缺少该字符编码所应用的内容。是输出吗?是字符串本身吗(某个地方一定有字符串)?是输入吗?

您需要a)共享您的代码以明确导致这种情况的原因,b)共享与代码相关的任何字符串的编码。

为什么不倒过来工作?使用此正则表达式删除所有"非单词"字符:

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

或者,使用'/[^a-zA-Z0-9_]/'可以更精确,但/W表示该块。

这里有很多方法可以清除我过去使用过的不需要的字符。(请记住,我在做mysql的时候会做mysql_real_eescape_string。

//////////////////////////////////////////////////////////////////////////////////
// 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;
}

这只是清除文本的多种方法中的一部分。从中得到你想要的。希望它能有所帮助。

可能使用str_replace()?我看不到你使用的字符。

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