如何删除像 这些不需要的字符?
我已经将字符编码设置为utf-8,但仍然会出现这些字符。
如果某人从单词复制文本并粘贴在TinyMCE上,则在将其保存在数据库之前不会显示不需要的字符。保存并从数据库中获取时,会显示不需要的字符。
下面是我目前的过滤代码:
$content = htmlentities(@iconv("UTF-8", "ISO-8859-1//IGNORE", $content));
使用它很好,但事情是一些不需要的字符没有完全过滤。
答案 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);