-------------文本---------------Name1     A     B     C
Name2     A     B     C
Name3     A     B     C-------------文本---------------
A、B、C是3个随机数字,有时某个数字会为空(即变为 Name1     A          C),请问如何才能在任何情况下取到ABC三个位置的值呢?
谢谢!

解决方案 »

  1.   

    那就奇怪了 当Name1 A C 的时候 我如何区分 这是 A 还是 B  还是 C ?
      

  2.   

    $s = <<< TXT
    Name1 A B C
    Name2 A  C
    Name3 A B C
    TXT;
    preg_match_all('/([ABC]+)\s+([ABC]*)\s+([ABC]*)\s*$/m', $s, $r);
    print_r($r);Array
    (
        [0] => Array
            (
                [0] => A B C
                [1] => A  C
                [2] => A B C
            )    [1] => Array
            (
                [0] => A
                [1] => A
                [2] => A
            )    [2] => Array
            (
                [0] => B
                [1] => C
                [2] => B
            )    [3] => Array
            (
                [0] => C
                [1] => 
                [2] => C
            ))
      

  3.   

    嘿嘿...a.php
    -------------文本---------------Name1 11 23 14
    Name2 43    33
    Name3 30 44    2-------------文本---------------
    b.php<?php
    $file = "a.php"; // 变量赋值
    $fp = fopen ( $file, "r" ); // 以只读方式打开文件
    $i = 0; // i=0
    while ( ! feof ( $fp ) ) { // while循环,条件:没到文件的末端。
    $buffer = fgets ( $fp, 4096 ); // fgets() 函数用于从文件中逐行读取文件,,读取的字节数。默认是 1024 字节。
    preg_replace ( '/ +/', ' ', $buffer );
    preg_match_all ( '/ ([0-9]+)/', $buffer, $matches );
    if (! empty ( $matches [1] )) {
    print_r ( $matches [1] );
    }
    $i = $i + 1; // 通过while循环,带动i值递增,实现数组构建。
    }
    fclose ( $fp ); // 关闭文件。
    ?>
      

  4.   

    应该是这样,上面有垃圾代码,原来想不用真则的
    $file = "a.php"; // 变量赋值
    $fp = fopen ( $file, "r" ); // 以只读方式打开文件
    while ( ! feof ( $fp ) ) { // while循环,条件:没到文件的末端。
    $buffer = fgets ( $fp, 4096 ); // fgets() 函数用于从文件中逐行读取文件,,读取的字节数。默认是 1024 字节。
    preg_replace ( '/ +/', ' ', $buffer );
    preg_match_all ( '/ ([0-9]+)/', $buffer, $matches );
    if (! empty ( $matches [1] )) {
    print_r ( $matches [1] );
    }
    }
    fclose ( $fp ); // 关闭文件
      

  5.   

    文本:Name1 A C如果让出来的结果是这样
    Array(
         [0]=A
         [1]=
         [2]=C
    )
    该如何实现?又要麻烦您一下,真不好意思~
      

  6.   

    用我给你的 a.php 和 b.php代码测试.另外竟然是数字就不要再用  A B C 了。
      

  7.   

    其实还有我觉得还有一个比较大的疑问!因为LZ要的是数字和字母,比如:
    文本:
    Name1:11     32
    我最后取出来的是Array(
         [0]=11
         [1]=
         [2]=32
    )还是Array(
         [0]=11
         [1]=32
         [2]=
    )同样道理,字母的也有这种状况
      

  8.   

    其实是这样的NAME2      21     25    121
    NAME3      87            68
    NAME3这一行想割成Array(
         [0]=87
         [1]=
         [2]=68
    )这样子
    这样应该够清晰了
      

  9.   


    我已经问过他了,怎么区分 是 A  还是 B 还是  C 而且空格还不是固定的,是无法判断到底是什么的.
    除非空格是可以判断固定的
      

  10.   


    我运行了下牛老大你的代码,的确是这样,如果LZ的需求就是这样,那也无所谓,感觉不太严谨!我建议LZ还是确定下,以免接下来的代码出问题
      

  11.   

    比如有一个数字 (空格)1(空格)2(空格) 这个2 应该是判断是 b 还是 c?可能应该判断为b,但是能保证前面1 2后面出现的空格不是误输入或者其他原因造成的嘛,如果可以那么就可以判断为b...
    楼主也没回答我的问题如何区分这是b还是c?如果是这样可以改写正则条件
      

  12.   

    这是文本的内容名 称      一     二     三
    NAME1      21     12     43
    NAME2       2      5    121
    NAME3      87            68
    NAME4       1     56     47
    NAME4      20     12      4
    就是在NAME3匹配出了问题,我想将这行分割成这样子的:
    Array
    (
        [0] => 87
        [1] => 
        [2] => 68
    )
    就是中间为空的数字也占一个变量
      

  13.   

    本帖最后由 PhpNewnew 于 2012-01-17 11:05:28 编辑
      

  14.   

    输出的是
    Array
    (
        [0] => 87
        [1] => 68
    )
      

  15.   

    解决了!非常感谢!看来要学学正则才行,刚开始学PHP,感觉不容易啊。