本帖最后由 sishenaiyin 于 2012-05-07 15:06:31 编辑

解决方案 »

  1.   

    我记得上次你问的示例是有空格隔开各项数据的,所以我建议你用explode或者sscanf,现在看来各项数据好像都粘在一起的。。就不好用sscanf了,得上正则,而且你得确保第三个值总是两位小数点的$str = <<<STR
    697【代练堂】70-85级★赠4000金五大声望尊敬★纯任务70.0084
    STR;
    preg_match('#(\d+)(.*?)(\d+\.\d{2})(\d+)$#',$str,$m);
    print_r($m);
      

  2.   

    我给你的示例,是直接文本里输入中文的,所以需要指定文件编码,比如指定为utf-8(利用'文件另存为'按钮,选择utf-8无bom头),然后通告浏览器以utf-8编码呈现结果。
    <?php
    header("Content-type:text/html;charset=utf-8");
    $str = <<<STR
    697【代练堂】70-85级★赠4000金五大声望尊敬★纯任务70.0084
    STR;
    preg_match('#(\d+)(.*?)(\d+\.\d{2})(\d+)$#',$str,$m);
    print_r($m);
    ?>
    你是从webservice获取数据的,注意编码一致就好了,比如获取的数据如果也是utf-8,你就需要加和上面一样的header通知浏览器,如果是入mysql数据库,也可以用SET NAMES utf8语句指定入库编码。
      

  3.   

    程序与页面统一编码。header()
      

  4.   

    中文能够正常显示了,但循环无法显示数据
    <?php
    $client = new SoapClient("http://s.dailiangu.com:8011/WebLocalData.asmx?WSDL");
    $p = $client->Return_Package(array('UN'=>'dailiantang','PS'=>'xieyanjobb1306','TopCount'=>'5'));
    $se = $p->Return_PackageResult->any;
    //将长字符串分割开
    $jj = explode("68",$se);
    //循环不能正常显示
    foreach($jj as $key=>$value){
    preg_match('#(\d+)(.*?)(\d+\.\d{2})(\d+)$#',$value,$m);
    echo $m[1]."-".$m[2]."-".$m[3]."-".$m[4];
    echo "<hr>";
    }
    //下面能够正常显示
    $str = "697【代练堂】70-85级★赠4000金五大声望尊敬★纯任务70.0084";
    preg_match('#(\d+)(.*?)(\d+\.\d{2})(\d+)$#',$str,$m);
    echo $m[1]."-".$m[2]."-".$m[3]."-".$m[4];
    ?>
      

  5.   

    得,感情你连返回数据的格式都没弄清啊,返回的确实是xml数据格式的,你看下你这个页面的浏览器源代码
    数据集人家都帮你弄好格式返回给你了,你处理下xml就成了
    <?php
    header("Content-type:text/html;charset=utf-8");
    $client = new SoapClient("http://s.dailiangu.com:8011/WebLocalData.asmx?WSDL");
    $p = $client->Return_Package(array('UN'=>'dailiantang','PS'=>'xieyanjobb1306','TopCount'=>'5'));
    $se = $p->Return_PackageResult->any;
    //将长字符串分割开
    $dom = simplexml_load_string($se);
    foreach($dom->NewDataSet->Get_WebLocalData as $datas)
    {
    //print_r($datas);
            echo "work id:".$datas->WorkID."<br/>";
    }
    ?>
      

  6.   

    绕了一大圈。。我上次那边给你说返回数据应该是xml数据,结果也给你绕进去了。。呵呵,自己慢慢弄吧。我忙去了。
      

  7.   

    这不是不懂这玩意嘛,第一次接触,非常非常感谢两位大哥的教导,特别是foolbirdflyfirst兄弟,真是感激不尽哪。
      

  8.   

    header("Content-type:text/html;charset=utf-8");
    $client = new SoapClient("http://s.dailiangu.com:8011/WebLocalData.asmx?WSDL");
    $p = $client->Return_Package(array('UN'=>'dailiantang','PS'=>'xieyanjobb1306','TopCount'=>'5'));
    $se = $p->Return_PackageResult->any;$dom = simplexml_load_string($se);
    foreach($dom->NewDataSet->Get_WebLocalData as $datas) {
      foreach($datas as $k=>$v) echo "$k : $v <br />";
      echo '<br />';
    }WorkID : 68 
    PID : 697 
    Ptitle : 【代练堂】70-85级★赠4000金五大声望尊敬★纯任务 
    Pri : 70.00 
    H : 84 WorkID : 68 
    PID : 698 
    Ptitle : 【代练堂】【S11荣誉战场毕业】全套加武器【秒排2-3天】 
    Pri : 50.00 
    H : 84 WorkID : 68 
    PID : 700 
    Ptitle : 【代练堂】dnf手工代练刷段刷尊【任意等级-尊2】 
    Pri : 40.00 
    H : 24 WorkID : 68 
    PID : 715 
    Ptitle : 【代练堂】【1-80级急速招募版】2天完成 全区全服 
    Pri : 30.00 
    H : 60 WorkID : 68 
    PID : 716 
    Ptitle : 【代练堂】【1-85级包卡135元】送大鸟五大声望尊敬 
    Pri : 135.00 
    H : 108