-1

爆発に問題があるので、単純なテキストファイルがあり、各行は数字で終わります。行末番号を抽出して、同じ数のサブスティングを作成したいだけです。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. サブ文字列

a21
.サブ文字列
2.サブ文字列

a31
.サブストリング
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 に答える