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

时间:2012-03-13 11:45:11

标签: php string

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

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

如果某人从单词复制文本并粘贴在TinyMCE上,则在将其保存在数据库之前不会显示不需要的字符。保存并从数据库中获取时,会显示不需要的字符。

下面是我目前的过滤代码:

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

使用它很好,但事情是一些不需要的字符没有完全过滤。

4 个答案:

答案 0 :(得分:1)

你可以通过简单地输出它们来删除这些字符 - 是的,这是有效的。

如果您需要更具体的指导方针,那么您需要更具体地解决您的问题。您目前只分享了一些信息:

  

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

缺少该字符编码适用的内容。是输出吗?它是字符串本身(某处必须有一些字符串)?这是输入吗?

您需要a)共享您的代码以明确导致此问题的原因,以及b)共享与您的代码相关的任何字符串的编码。

答案 1 :(得分:0)

你为什么不向后工作?使用此正则表达式删除所有“非单词”字符:

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

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

答案 2 :(得分:0)

这里有很多方法可以清除我过去使用的不需要的字符。 (记住我在做mysql时做mysql_real_escape_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;
}

这只是清理文本的众多方法中的一小部分。从中得到你想要的东西。希望它有所帮助。

答案 3 :(得分:-2)

也许是str_replace()? 我看不到你正在使用的字符。

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

str_replace($badChars, '', $string);