国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP之mb_check_encoding使用

tracymac7 / 2408人閱讀

摘要:檢查字符串在指定的編碼里是否有效檢查指定的字節(jié)流在指定的編碼里是否有效。它能有效避免所謂的無(wú)效編碼攻擊。要檢查的字節(jié)流。成功時(shí)返回,或者在失敗時(shí)返回。輸出空輸出編碼的字符串設(shè)置文件編碼為博客園和。

mb_check_encoding

(PHP 4 >= 4.4.3, PHP 5 >= 5.1.3, PHP 7)

mb_check_encoding — Check if the string is valid for the specified encoding

mb_check_encoding — 檢查字符串在指定的編碼里是否有效

Description
bool mb_check_encoding ([ string $var = NULL [, string $encoding = mb_internal_encoding() ]] )
// Checks if the specified byte stream is valid for the specified encoding. 
// It is useful to prevent so-called "Invalid Encoding Attack".

// 檢查指定的字節(jié)流在指定的編碼里是否有效。它能有效避免所謂的“無(wú)效編碼攻擊(Invalid Encoding Attack)”。
Parameters var

The byte stream to check. If it is omitted, this function checks all the input from the beginning of the request.

要檢查的字節(jié)流。如果省略了這個(gè)參數(shù),此函數(shù)會(huì)檢查所有來(lái)自最初請(qǐng)求所有的輸入。

encoding

The expected encoding.

期望的編碼。

Return Values

Returns TRUE on success or FALSE on failure.

成功時(shí)返回 TRUE, 或者在失敗時(shí)返回 FALSE。

Examples
 設(shè)置文件編碼為gbk*/
$str = "博客園和github。";
echo mb_check_encoding( $str, "utf-8" ) . PHP_EOL;  //輸出空
echo mb_check_encoding( $str, "gbk" ) . PHP_EOL; //輸出1

/**utf-8編碼的字符串  --> 設(shè)置文件編碼為utf-8*/
$str = "博客園和github。";
echo mb_check_encoding( $str, "utf-8" ) . PHP_EOL;  //1
echo mb_check_encoding( $str, "gbk" ) . PHP_EOL; //輸出空

$utf8Str = "我abc是誰(shuí).";
echo mb_check_encoding( $utf8Str, "utf-8" ) . PHP_EOL;  //輸出1
//如果有中文標(biāo)點(diǎn)符號(hào)則為空!!!
echo mb_check_encoding( $utf8Str, "gbk" ) . PHP_EOL; //輸出1

/**自定義檢測(cè)字符串編碼是否為utf-8*/
function is_utf8( $str ) {
    return (bool) preg_match( "http://u", serialize($str) );
}

echo "hello 中國(guó)!" .is_utf8( "hello 中國(guó)!" ) . PHP_EOL; //1

function check_utf8( $str ) {
    $len = strlen( $str );
    for ( $i = 0; $i < $len; $i ++ ) {
        $c = ord( $str[ $i ] );
        if ( $c > 128 ) {
            if ( ( $c > 247 ) ) {
                return false;
            } elseif ( $c > 239 ) {
                $bytes = 4;
            } elseif ( $c > 223 ) {
                $bytes = 3;
            } elseif ( $c > 191 ) {
                $bytes = 2;
            } else {
                return false;
            }
            if ( ( $i + $bytes ) > $len ) {
                return false;
            }
            while ( $bytes > 1 ) {
                $i ++;
                $b = ord( $str[ $i ] );
                if ( $b < 128 || $b > 191 ) {
                    return false;
                }
                $bytes --;
            }
        }
    }
    
    return true;
} // end of check_utf8

echo check_utf8("hello 中國(guó)").PHP_EOL; // 1
echo check_utf8( "x00xE3").PHP_EOL;  //空

/** check a strings encoded value */
function checkEncoding( $string, $string_encoding ) {
    $fs = $string_encoding == "UTF-8" ? "UTF-32" : $string_encoding;
    $ts = $string_encoding == "UTF-32" ? "UTF-8" : $string_encoding;
    
    return $string === mb_convert_encoding( mb_convert_encoding( $string, $fs, $ts ), $ts, $fs );
}

/* test 1 variables */
$string   = "x00x81";
$encoding = "Shift_JIS";

/* test 1 mb_check_encoding (test for bad byte stream) */
if ( true === mb_check_encoding( $string, $encoding ) ) {
    echo "valid (" . $encoding . ") encoded byte stream!" . PHP_EOL;
} else {
    echo "invalid (" . $encoding . ") encoded byte stream!" . PHP_EOL;
}

/* test 1 checkEncoding (test for bad byte sequence(s)) */
if ( true === checkEncoding( $string, $encoding ) ) {
    echo "valid (" . $encoding . ") encoded byte sequence!" . PHP_EOL;
} else {
    echo "invalid (" . $encoding . ") encoded byte sequence!" . PHP_EOL;
}

/* test 2 */
/* test 2 variables */
$string   = "x00xE3";
$encoding = "UTF-8";
/* test 2 mb_check_encoding (test for bad byte stream) */
if ( true === mb_check_encoding( $string, $encoding ) ) {
    echo "valid (" . $encoding . ") encoded byte stream!" . PHP_EOL;
} else {
    echo "invalid (" . $encoding . ") encoded byte stream!" . PHP_EOL;
}

/* test 2 checkEncoding (test for bad byte sequence(s)) */
if ( true === checkEncoding( $string, $encoding ) ) {
    echo "valid (" . $encoding . ") encoded byte sequence!" . PHP_EOL;
} else {
    echo "invalid (" . $encoding . ") encoded byte sequence!" . PHP_EOL;
}

文章參考

http://php.net/manual/zh/func...

轉(zhuǎn)載注明出處

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28179.html

相關(guān)文章

  • PHP面試常考會(huì)話控制

    摘要:一的會(huì)話也稱為。如果啟動(dòng)會(huì)話成功,則函數(shù)返回,否則返回。會(huì)話啟動(dòng)后就可以載入該會(huì)話已經(jīng)注冊(cè)的會(huì)話變量以便使用。但數(shù)組創(chuàng)建的在會(huì)話結(jié)束后就會(huì)失效。預(yù)告本周三更新面試常考之網(wǎng)絡(luò)協(xié)議,敬請(qǐng)期待。 你好,是我琉憶,歡迎您來(lái)到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試常考之會(huì)話控制周三:PHP面試常考之網(wǎng)絡(luò)協(xié)議周五:PHP面試常考題之會(huì)話控制和...

    lsxiao 評(píng)論0 收藏0
  • PHP面試常考設(shè)計(jì)模式——策略模式

    摘要:策略模式介紹策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來(lái),而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。使用策略模式的好處策略模式提供了管理相關(guān)的算法族的辦法。使用策略模式可以避免使用多重條件轉(zhuǎn)移語(yǔ)句。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試常考之設(shè)計(jì)模式——工...

    Drinkey 評(píng)論0 收藏0
  • PHP代碼修正CodeSniffer

    摘要:它包含兩類腳本,和地址腳本對(duì)文件定義了一系列的代碼規(guī)范通常使用官方的代碼規(guī)范標(biāo)準(zhǔn),比如的,能夠檢測(cè)出不符合代碼規(guī)范的代碼并發(fā)出警告或報(bào)錯(cuò)可設(shè)置報(bào)錯(cuò)等級(jí)。腳本能自動(dòng)修正代碼格式上不符合規(guī)范的部分。 Last-Modified: 2019年5月10日13:59:27 參考鏈接 PHP開(kāi)發(fā)規(guī)范之使用phpcbf腳本自動(dòng)修正代碼格式 在PhpStorm中使用PSR2編碼規(guī)范phpcbf腳本自...

    khs1994 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<