可能重复:
how to replace special characters with the ones they’re based on in PHP?
我有一个看起来像这样的字符串:
ABCÇĆDEFGHÎIïJ123450086
在PHP中如何使其显示为:
ABCDEFGHIJ123450086
无需手动更换不需要的每个字符。我可以使用某种RegEx吗?怎么样?
我只想要A-Z和0-9,没有其他外来字符(如,删除它们)。
答案 0 :(得分:4)
使用字符类:
$string = preg_replace('/[^\w\d]/', '', $string);
用空字符串替换所有不是([^]
)字母(\w
)的字符,也不能替换数字(\d
)。
答案 1 :(得分:1)
一个很好的功能:
/**
* Strip accents
*
* @param string $str string to clean
* @param string $encoding encoding type (example : utf-8, ISO-8859-1 ...)
*/
function strip_accents($str, $encoding='utf-8') {
// transforme accents chars in entities
$str = htmlentities($str, ENT_NOQUOTES, $encoding);
// replace entities to have the first nice char
// Example : "&ecute;" => "e", "&Ecute;" => "E", "Ã " => "a" ...
$str = preg_replace('#&([A-za-z])(?:acute|grave|cedil|circ|orn|ring|slash|th|tilde|uml);#', '\1', $str);
// Replace ligatures like : Œ, Æ ...
// Example "Å“" => "oe"
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str);
// Delete else
$str = preg_replace('#&[^;]+;#', '', $str);
return $str;
}
// Example
$texte = 'Ça va mon cœur adoré?';
echo suppr_accents($texte);
// Output : "Ca va mon coeur adore?"
答案 2 :(得分:0)
假设您要删除它们,您可以使用preg_replace将不在a-z,A-Z和0-9范围内的所有字符替换为'';
否则使用另一个帖子中给出的翻译技术。
答案 3 :(得分:0)
您始终可以使用正则表达式。
preg_replace('/^[A-Za-z0-9]/', '', $some_str)
答案 4 :(得分:0)
使用白名单:
$input = 'ABCÇĆDEFGHÎIïJ123450086';
$filtered = preg_replace("~[^a-zA-Z0-9]+~","", $input);