如何从php数组中删除任何特殊字符?
我有这样的数组:
$temp = array (".com",".in",".au",".cz");
我希望结果为:
$temp = array ("com","in","au","cz");
我是这样得到结果的:
$temp = explode(",",str_replace(".","",implode(",",$temp)));
但是有没有php数组函数,我们可以直接从数组的所有值中删除任何字符?我试过了,发现trim()
只能删除空格,但不能删除任何字符。
使用preg_replace函数。这将替换任何不是字母、数字或空格的内容。
查看演示
<?php
$temp = array (".com",".in",".aus",".cz");
$temp = preg_replace("/[^a-zA-Z 0-9]+/", "", $temp );
print_r($temp);
//outputs
Array
(
[0] => com
[1] => in
[2] => aus
[3] => cz
)
?>
我通常会生成一个函数
function make_slug($data)
{
$data_slug = trim($data," ");
$search = array('/','''',':',';','!','@','#','$','%','^','*','(',')','_','+','=','|','{','}','[',']','"',"'",'<','>',',','?','~','`','&',' ','.');
$data_slug = str_replace($search, "", $data_slug);
return $data_slug;
}
然后用这种方式称之为
$temp = array (".com",".in",".au",".cz");
for($i = 0; $i<count($temp); $i++)
{
$temp[$i] = make_slug($temp[$i]);
}
print_r($temp);
$temp的每个值将不再包含特殊字符
请参阅演示
作为问题的解决方案,请执行以下代码片段
$temp = array (".com",".in",".au",".cz");
function strip_special_chars($v)
{
return str_replace('.','',$v);
}
$result[]=array_map('strip_special_chars',$temp);
实际上,如果您提供第二个参数(字符掩码),trim()
可以修剪您想要的任何字符。顾名思义,这只会删除字符串开头和结尾的字符。在您的情况下,ltrim()
可能更合适。
您可以将array_map()
和ltrim()
与第三个参数一起用于字符掩码,如下所示:
$temp = array_map('ltrim', $temp, array_fill(0, count($temp), '.'));
第三个参数应该是一个与您正在处理的数组长度相匹配的参数数组,这就是我使用array_fill()
创建它的原因