簡體   English   中英

如何從php數組中刪除任何特殊字符?

[英]How to remove any special character from php array?

如何從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()創建它的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM