日期:2014-05-17  浏览次数:20553 次

一个很简单的匹配问题
-------------文本---------------

Name1 A B C
Name2 A B C
Name3 A B C

-------------文本---------------


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

------解决方案--------------------
PHP code
$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);

------解决方案--------------------
嘿嘿...

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 ); // 关闭文件。
?>
------解决方案--------------------
其实还有我觉得还有一个比较大的疑问!因为LZ要的是数字和字母,比如:
文本:
Name1:11 32
我最后取出来的是
PHP code

Array(
     [0]=11
     [1]=
     [2]=32
)