PHP也有chr()函数..但没有chrb(),
强制转换,将单字符转为单字节,这点PHP容易........

解决方案 »

  1.   

    php的chr()函数就是vb的chrB()函数
      

  2.   

    在php中chr()函数的作用和vb里面的chrB()是一样的
      

  3.   

    php的chr()函数就是vb的chrB()函数
    !
      

  4.   

    相反的函数是 ord(string)
    同 vbs 中的 asc
      

  5.   

    附上用法例子,一个判断字符串是否由utf-8格式的函数function utf8_probability(&$rawtextstr) {
    $score = 0;
    $i = 0;
    $rawtextlen = 0;
    $goodbytes = 0;
    $asciibytes = 0;
    $rawtextarray = preg_split("//",$rawtextstr,-1, PREG_SPLIT_NO_EMPTY); //转换成char数组,如果是php5,则可使用str_split
    $rawtext = array();//var_dump($rawtextarray);die;for($i=0;$i<count($rawtextarray);$i++)
    $rawtext[] = ord($rawtextarray[$i]); //ord(char)
    // Maybe also use UTF8 Byte Order Mark(BOM): EF BB BF
    //BOM,某些utf8文件流的首3个字节,可以表示这个文件的编码方式// Check to see if characters fit into acceptable ranges
    //print_r($rawtext);
    $rawtextlen = strlen($rawtextstr);
    for ($i = 0; $i < $rawtextlen; $i++) {
    if ($rawtext[$i] < 0x80) { // One byte
    $asciibytes++; // Ignore ASCII, can throw off count
    } else if (0xC0 <= $rawtext[$i] && $rawtext[$i] <= 0xDF && // Two bytes
    $i+1 < $rawtextlen && 0x80 <= $rawtext[$i+1] && $rawtext[$i+1] <= 0xBF) {
    $goodbytes += 2; $i++;
    } else if (0xE0 <= $rawtext[$i] && $rawtext[$i] <= 0xEF && // Three bytes
    $i+2 < $rawtextlen && 0x80 <= $rawtext[$i+1] && $rawtext[$i+1] <= 0xBF &&
    0x80 <= $rawtext[$i+2] && $rawtext[$i+2] <= 0xBF) {
    $goodbytes += 3; $i+=2;
    }
    //if you want check just a few ,you may stop here with a score make.
    //or you will be delayed when you meet lots of big files.
    }
    //ascii is sub of utf8
    if ($asciibytes == $rawtextlen) { return 0; }
    $score = (int)(100 * ($goodbytes/($rawtextlen-$asciibytes)));
    // If not above 98, reduce to zero to prevent coincidental matches
    if ($score > 98) {
    return $score;
    } else if ($score > 95 && $goodbytes > 30) {
    // Allows for some (few) bad formed sequences
    return $score;
    } else {
    return 0;
    }
    }