php爆炸识别行尾的数字

时间:2012-08-18 08:08:58

标签: php explode

有爆炸问题,我有简单的文本文件,每行都以数字结尾。我只想提取行号末尾并创建相同数量的子词。我试图使用爆炸功能,但无法只检索字符串数字的结尾。以下是.txt文件结构和我预期结果的代码。

'的text.txt'

a1 bbb ccc 111-111 ddd eee 3
a2 fff ccc(123-12312)111-111 ddd eee 2
a3 bbb aaa(32 32)111-111 ddd eee 4

<?php  
    $file = "C:\\test.txt";  
    $f = fopen($file, "r");  
    while ( $line = fgets($f, 1000) ) {  
        print "<br/>";  
        $pieces = explode(" ", $line);  
        print $line;  
        print "<br/>";  
        print "<\t>";  
        for(i=0; i>=$pieces[5];i++)  
        {  
            print "<br/>";  
            print "<\t>";  
        }  
        print "<br/>";  
     }  
?  

输出:
a1

  1. 子字符串
  2. 子字符串
  3. 子字符串
  4. A2
    子串
    2.子字符串

    A3
     子串
     2.子串
     子串
     4.子字符串

2 个答案:

答案 0 :(得分:3)

您正在寻找的功能称为end()

  

end()使数组的内部指针前进到最后一个元素,并且   返回它的值。

$pieces = explode(" ", $line);
echo end($pieces);

答案 1 :(得分:0)

您也可以使用substr()

echo substr(trim($line), -1);

我会这样做:

<?php
$file = "./test.txt";

foreach(file($file) as $lines){
    echo '<ol>'.PHP_EOL;
    $i = 1;
    foreach($parts = explode(' ',trim($lines)) as $key=>$line){
        if($key == 0){echo "\t<p>".$line.'</p>'.PHP_EOL;}
        if($key >= 1 && $key <= end($parts)){echo  "\t<li>".$line.'</li>'.PHP_EOL;}
        $i++;
    }
    echo '</ol>'.PHP_EOL;
}
/* Result
<ol>
    <p>a1</p>
    <li>bbb</li>
    <li>ccc</li>
    <li>111-111</li>
</ol>
<ol>
    <p>a2</p>
    <li>fff</li>
    <li>ccc</li>
</ol>
<ol>
    <p>a3</p>
    <li>bbb</li>
    <li>aaa</li>
    <li>(32</li>
    <li>32)111-111</li>
</ol>

*/
?>