第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

檢查數(shù)組元素中是否存在禁止擴(kuò)展

檢查數(shù)組元素中是否存在禁止擴(kuò)展

PHP
長(zhǎng)風(fēng)秋雁 2023-10-01 17:06:02
我想檢查數(shù)組元素中是否有任何禁止的擴(kuò)展。怎么做?$allowed_types = array('jpg', 'jpeg');Array(   [0] => C:/xampp/htdocs/blog/media/images/1597335125_1.jpg   [1] => C:/xampp/htdocs/blog/media/images/1597335125_2.jpg   [2] => C:/xampp/htdocs/blog/media/images/1597335125_3.jpg   [3] => C:/xampp/htdocs/blog/media/images/1597335125_4.jpg   [4] => C:/xampp/htdocs/blog/media/images/1597335125_5.png)
查看完整描述

3 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

有多種方法,您可以使用pathinfo()例如如下所示:


$allowed_types = array('jpg', 'jpeg');


$files = [

   "C:/xampp/htdocs/blog/media/images/1597335125_1.jpg",

   "C:/xampp/htdocs/blog/media/images/1597335125_2.jpg",

   "C:/xampp/htdocs/blog/media/images/1597335125_3.jpg",

   "C:/xampp/htdocs/blog/media/images/1597335125_4.jpg",

   "C:/xampp/htdocs/blog/media/images/1597335125_5.png",

];


$not_allowed_files = array_filter($files, function($var) use ($allowed_types) {

    $path_info = pathinfo($var);

    return !in_array($path_info['extension'], $allowed_types);

});


查看完整回答
反對(duì) 回復(fù) 2023-10-01
?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

通常,我拒絕回答不包括編碼嘗試的問(wèn)題,但我不得不在這種情況下插話,因?yàn)橐呀?jīng)提供了次優(yōu)/不正確的建議,我想幫助未來(lái)的研究人員。

應(yīng)避免正則表達(dá)式,除非它提供了寶貴的優(yōu)勢(shì)——這就是其中之一。我的代碼片段只需要兩次函數(shù)調(diào)用,而不是 2n+1 次函數(shù)調(diào)用。

使用在正則表達(dá)式中表示“OR”的管道內(nèi)爆列入白名單的擴(kuò)展值。將管道分隔的字符串括在括號(hào)中以包含邏輯,在末尾寫入 a$來(lái)要求擴(kuò)展值僅在字符串末尾匹配。使用i模式修飾符使整個(gè)模式不區(qū)分大小寫。由于您的數(shù)組值僅包含字母字符,因此無(wú)需調(diào)用preg_quote()來(lái)提供轉(zhuǎn)義斜杠。

代碼:(演示

$allowed_types = ['jpg', 'jpeg'];


$files = [

? ?"C:/xampp/htdocs/blog/media/images/1597335125_1.jpg",

? ?"C:/xampp/htdocs/blog/media/images/jpeg_2.gif",

? ?"C:/xampp/htdocs/blog/media/images/1597335125_3.jpeg",

? ?"C:/xampp/htdocs/blog/media/images/1597335125_4.jpg",

? ?"C:/xampp/htdocs/blog/media/images/jpg_5.png",

];


if ($disallowed = preg_grep('/(' . implode('|', $allowed_types) . ')$/i', $files, PREG_GREP_INVERT)) {

? ? var_export($disallowed);

}

輸出:


array (

? 1 => 'C:/xampp/htdocs/blog/media/images/jpeg_2.gif',

? 4 => 'C:/xampp/htdocs/blog/media/images/jpg_5.png',

)

如果沒(méi)有括號(hào),“字符串結(jié)尾”$將僅適用于管道分隔字符串中的最終擴(kuò)展名,并使模式不正確。

如果您不需要白名單數(shù)組是動(dòng)態(tài)的,您可以將正則表達(dá)式硬編碼為:

/jpe?g$/i

如果您通過(guò)目錄掃描或glob()調(diào)用生成文件的輸入數(shù)組,那么您應(yīng)該使用glob()的過(guò)濾功能。檢查 php 手冊(cè)。


要僅檢查任何文件是否具有最佳性能o(小 o)的無(wú)效擴(kuò)展名,請(qǐng)使用foreach()帶有條件的經(jīng)典循環(huán)break。

代碼:(演示

$hasInvalidFile = false;

foreach ($files as $file) {

? ? if (!in_array(pathinfo($file, PATHINFO_EXTENSION), $allowed_types)) {

? ? ? ? $hasInvalidFile = true;

? ? ? ? break;

? ? }

}

var_export($hasInvalidFile);


查看完整回答
反對(duì) 回復(fù) 2023-10-01
?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊


這將連接$allowed_typesOR 運(yùn)算符|并檢查擴(kuò)展名并返回不匹配的數(shù)組:


if(preg_grep('/'.implode('|', $allowed_types).'$/i', $array, PREG_GREP_INVERT)) {

    // disallowed file types

}

在您的示例中,它將返回那些不匹配的內(nèi)容,jpg|jpeg$這意味著:


匹配字符串末尾的jpgORjpeg$

i結(jié)束后的字母/是大寫還是小寫(i如果需要,可以刪除)

如果您確實(shí)想知道哪些不匹配,那么:


if($bad = preg_grep('/'.implode('|', $allowed_types).'$/i', $array, PREG_GREP_INVERT)) {

    print_r($bad);

}

然后$bad將包含不匹配的條目。


查看完整回答
反對(duì) 回復(fù) 2023-10-01
  • 3 回答
  • 0 關(guān)注
  • 124 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)