-1

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

'文本.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. 子串

a2
1. 子字符串
2. 子字符串

a3
1. 子串
2. 子串
3. 子串
4. 子串

4

2 回答 2

3

您要查找的函数称为end()

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

$pieces = explode(" ", $line);
echo end($pieces);
于 2012-08-18T08:09:52.237 回答
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>

*/
?>
于 2012-08-18T08:13:50.527 回答