我試圖做一個小的PHP腳本來自動化一些工作過程。 腳本必須做的是讀取一個文件(每個文件大約10-20kb)。 然後,我需要在文件中搜索一些特定的短語並輸出 - 如果短語出現 - 布料號和短語。PHP:在特定的短語/單詞和輸出後的文本文件中搜索
例如,我有一個我正在閱讀和搜索的文本文件。我搜索短語「花是黃色的」,「馬是白的」,和「混合」;
然後我的輸出是:
4號線:「馬是白的」 第19行: 「混合」; 第22行:「混合」; 第99行:「花是黃色的」 ...等等。
我使用這個代碼,它正確地輸出每一行和行號,但我不能讓一個搜索程序,僅輸出搜索短語:
<?php
$lines = file('my-text-file.txt');
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
我雖然是使用strpos,然後每當我找到一個短語的出現,它把它放到一個數組(或字典)中,行號作爲鍵和短語作爲值,但沒有能夠使它的工作,我認爲有可能做一個更好,更有效的方法。
任何幫助或建議,我已經去的方向將非常感激。
感謝
- Mestika
喜羅密歐,那工作不錯 - 它回到它應該,但有一個例外的線條。最後一個詞「混合」,它搜索「混合」,不管它在哪裏。 例如如果有一行:「混合顏色」,那麼它也會返回它。無論如何要「修剪」它只返回整個單詞,或者如果有符號,如「。」要麼 」;」在它後面?所以「混合」將被退回,但不是「混合顏色」? – Mestika 2011-06-15 12:50:55
恐怕你需要正則表達式。這正是我想要首先發布的內容,但是人們會開始抱怨它很慢,但它是最強大和最複雜的文本匹配方式。您可以使用'preg_match('/ \ b'。preg_quote($ needle,'/')。'\ b/i',$ line)'來代替stripos。這裏是一個正則表達式的單詞邊界的讀取,還有更多關於正則表達式的內容:http://www.regular-expressions.info/wordboundaries.html – 2011-06-15 17:42:09