这段话保存为GBK编码的,为什么运行出来会有乱码?
<?php
$p='#<div class="title">[^\s]+(.*)</div>#isU';
$s='<div class="title">早上好!</div>';
preg_match_all($p,$s,$d);
var_dump($d);
?>

解决方案 »

  1.   

    页面编码要与这个一致。
    <meta http-equiv="Content-Type" content="text/html; charset="/>
      

  2.   

    文件为gbk编码
    那么代码中加上header("content-type:text/html;charset=gbk");
    <?php
    header("content-type:text/html;charset=gbk");
    $p='#<div class="title">[^\s]+(.*)</div>#isU';
    $s='<div class="title">早上好!</div>';
    preg_match_all($p,$s,$d);
    var_dump($d);
    ?>
      

  3.   

    array
      0 => 
        array
          0 => string '<div class="title">早上好!</div>' (length=32)
      1 => 
        array
          0 => string '缟虾�!' (length=6)
    早上好!
    为 7 个字节,你实际输出的是 6 个字节
    早 的第一个字节被 [^\s]+ 匹配去了
    所以出现了乱码