5

地元のボランティア消防隊のアドレス アラート スクリプトを実行しようとしていますが、行き詰っています。

次のような行を含む preplan.txt という txt 区切りファイルがあります。

Line1: REF00001 | NAME1 | ALERTADDRESS1 | LINK2DOWNLOADPDFINFOONADDRESS1 | NOTESONADDRESS1

Line2: REF00002 | NAME2 | ALERTADDRESS2 | LINK2DOWNLOADPDFINFOONADDRESS2 | NOTESONADDRESS2

Line3: REF00003 | NAME3 | ALERTADDRESS3 | LINK2DOWNLOADPDFINFOONADDRESS3 | NOTESONADDRESS3

等々。

ジョブのアドレスである $jobadd という名前の文字列もあります...

私がphpで行う必要があるのは、ジョブアドレスがtxtファイル内のアラートアドレスのいずれかと同じ($jobadd)である場合、関連する名前、アドレス、リンク、およびメモを表示することです.それが書かれているかどうかも無視する必要があります.大文字かどうか。基本的に、$jobadd = txt ファイル内のアドレスがその情報を表示する場合...

最後の行しかエコーできないようです。

4

3 に答える 3

4

まず、文字列を行に分割します。

$lines = explode("\n", $data); // You may want "\r\n" or "\r" depending on the data

次に、これらの行も分割してトリムします。

$data = array();

foreach($lines as $line) {
    $data[] = array_map('trim', explode('|', $line));
}

最後に、$jobadd列 #3、つまりインデックス #2 を探し、見つかった場合はデータを出力します。

foreach($data as $item) {
    if(strtolower($item[2]) === strtolower($jobadd)) {
        // Found it!
        echo "Name: {$item[1]}, link: {$item[3]}, notes: {$item[4]}";
        break;
    }
}
于 2012-03-31T02:06:24.080 に答える
1

更新しました

少しストリームライン。の正しいファイル パスを入力するだけで、準備完了です$file

$data = file_get_contents($file);

$lines = array_filter(explode("\n", str_replace("\r","\n", $data)));

foreach($lines as $line) {

    $linedata = array_map('trim', explode('|', $line));

    if(strtolower($linedata[2]) == strtolower($jobadd)) {
        // Found it!
        echo "Name: {$linedata[1]}, link: {$linedata[3]}, notes: {$linedata[4]}";
        break;
    }
}
于 2012-03-31T03:04:09.727 に答える
0
<?php

    define('JOBADDR','ALERTADDRESS3');

    # get all lines
    $pl = file_get_contents('preplan.txt');
    $pl = explode("\n",$pl); 

    # cleanup
    foreach($pl as $k=>$p){ # goes through all the lines
        if(empty($p) || strpos($p,'|')===false || strtoupper($p)!==$p /* <- this checks if it is written in capital letters, adjust according to your needs */ )
            continue;

        $e = explode('|', $p); # those are the package elements (refid, task name, address, ... )
        if(empty($e) || empty($e[2])) # $e[2] = address, it's a 0-based array
            continue;

        if(JOBADDR !== trim($e[2])) # note we defined JOBADDR at the top
            continue;

        # "continue" skips the current line

        ?>


        <p>REF#<?=$e[0]; ?> </p>
        <p><b>Name: </b> <?=$e[1]; ?></p>
        <p><b>Location:</b> <a href="<?=$e[3]; ?>"><?=$e[2]; ?></a> </p>
        <p><b>Notes: </b> </p>
        <p style="text-indent:15px;"><?=empty($e[4]) ? '-' : nl2br($e[4]); ?></p>

        <hr />


        <?php
    }
于 2012-03-31T02:20:48.157 に答える