0

まず英語が下手ですみません。

特定の単語の .txt ファイルから複数の Web ページを検索する php スクリプトを作成しようとしています。

より具体的に:

多くの URL を保存した .txt ファイルがあり (すべての URL が 1 行にあるため、10 個の URL がある場合、ファイルには 10 行あります)、スクリプトで各 URL の Web ページのコンテンツを特定の単語でチェックする必要があります。したがって、その単語が Web ページで見つかった場合、スクリプトは ONLINE を返します。それ以外の場合は DOWN を返します。

スクリプトを作成しましたが、問題は、ファイルからの URL の Web ページ コンテンツに特定の単語が含まれていなくても、常に ONLINE が返されることです。

<?php  
$allads = file("phpelist.txt");  
print("Checking urls: <br><br><br><strong>");  
for($index = 0; $index <count($allads); $index++)  
{  
$allads[$index] = ereg_replace("\n", "", $allads[$index]);  
$data = file_get_contents('$allads[$index]');  
$regex = '/save/';  
if (preg_match($regex, $data)) {  
echo "$allads[$index]</strong>...ONLINE<br><strong>";  
} else {  
echo "$allads[$index]</strong>...DOWN<br><strong>";  
}  
}  
print("</strong><br><br><br>I verified all urls from file!");  
?
4

1 に答える 1

0

特定の Web ページで特定の文字列を検索するには、正規表現の代わりに (stripos()大文字と小文字を区別しない) または(大文字と小文字を区別する) を使用します。strpos()

if( stripos(haystack, needle) !== FALSE ) {
   //the webpage contains the word
}

例:

$str = 'sky is blue';
$wordToSearchFor = 'sky';

if (strpos($str, $wordToSearchFor) !== false) {
    echo 'true';
}
else {
    echo 'Uh oh.';
}

デモ!

ただし、プログラムを使用して Web ページをスキミングすることは、適切な方法とは見なされず、絶対に必要でない限り行うべきではありません。

アップデート:

file_get_contentsあなたがやっているあなたの呼び出しで:

$data = file_get_contents('$allads[$index]');  

一重引用符を使用しており、変数の値が置き換えられません。file_get_contents実際の URLを取得するには、二重引用符を使用する必要があります。それを次のように置き換えます。

$data = file_get_contents("$allads[$index]");  

私が気付いたもう 1 つのことはereg_replace()、コードで非推奨の関数を使用していることです。赤いボックスが見えますか?非推奨の関数に依存することは、強くお勧めできません。

上記の修正をすべて行った後、コードは次のようになります。

$allads = file("phpelist.txt");  
print("Checking urls: <br><br><br><strong>");  

for($index = 0; $index <count($allads); $index++)  
{  
    $allads[$index] = str_replace("\n", "", $allads[$index]);  
    $data = file_get_contents("$allads[$index]");  

    $searchTerm = 'the';  

    if (stripos($data, $searchTerm) !== false) {
        echo "$allads[$index]</strong>...ONLINE<br><strong>";  
    } 
    else 
    {  
        echo "$allads[$index]</strong>...DOWN<br><strong>";  
    }  
}  

print("</strong><br><br><br>I verified all urls from file!");  
?>
于 2013-09-14T02:43:59.003 に答える