1

「氷」を含む単語をスクレイピングしたいページがあるとしましょう。どうすれば簡単にこれを行うことができますか? 物事をソースコードに分解する多くのスクレーパーを見てきましたが、これは必要ありません。Webページのプレーンテキストを検索するものが必要です。

編集: 基本的に、.jpeg を検索してファイル名全体を見つけるために何かが必要です。(ウェブサイトでは平文で表示され、タグに隠されているわけではありません)

4

4 に答える 4

1

以下に一致するものはすべて、そのice中に含まれる単語です。

/(\w*)ice(\w*)/i

\w(一致すること0-9にも注意してください_。以下の方が良い結果が得られる可能性があります/\b.*?ice\b.*?/i:)


UPDATE
ファイル名を一致させるには(空白を含めることはできません):

/\S+\.jpeg/i

<?php
$str = 'Picture of me: 238484534.jpeg and someone else img-of-someone.jpeg here';
$cnt = preg_match_all('/\S+\.jpeg/i', $str, $matches);
print_r($matches);
于 2011-04-14T09:34:45.020 に答える
0

1. attribute,textname のように、HTML タグ内の単語も読みたいですか? 2.それとも、ウェブページの表示部分のみですか?

for#1 : ソリューションはシンプルで、他の回答で述べたように既に存在します。

for#2: PHP DOMDOCUMENT クラスを使用し、innerHTML のみを抽出して検索します。ドキュメントはこちら:

http://php.net/manual/en/class.domdocument.php

たとえば、これを参照してください。

PHP DOMDocument の HTML タグの除去

于 2011-04-14T09:40:12.410 に答える
0

これには正規表現を使用する必要があります。以下では、PCRE http://www.php.net/manual/en/ref.pcre.phpと関数 preg_match http://www.php.net/manual/en/function.preg-match-all.phpを使用します。

<?php

$html = <<<EOF
<html>
    <head>
        <title>Test</title>
    </head>
    <body>List of files:
        <ul>
            <li>test1.jpeg</li>
            <li>test2.jpeg</li>
        </ul>
    </body>
</html>
EOF;
$matches = array();
$count = preg_match_all("([0-9a-zA-Z_-]+\.jpeg)", $html, $matches);
if (count($matches) > 1) {
    for ($i = 1; $i < count($matches); $i++) {
        print "Filename: {$matches[$i]}\n";
    }
}
?>
于 2011-04-14T09:36:56.960 に答える
0

これを試して:

preg_match_all('/\w*ice\w*/', 'abc icecream lice', $matches);

print_r($matches);
于 2011-04-14T10:03:22.827 に答える