如何删除这些不需要的字符�������?
我已经将字符编码设置为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);