Как я могу найти остальную часть слова из строки в нем в PHP? - PullRequest
1 голос
/ 14 апреля 2011

Допустим, у меня есть страница, которую я хочу прочесать для слов со словами "лед", как я могу сделать это легко?Я вижу много скребков, разбивающих вещи на исходный код, но мне это не нужно.Мне просто нужно что-то, что просматривает обычный текст на веб-странице.

Редактировать: Мне в основном нужно что-то для поиска .jpeg и найти полное имя файла.(это текст на сайте, не скрытый в теге)

Ответы [ 4 ]

1 голос
/ 14 апреля 2011

Все, что соответствует следующему, является словом с ice в нем:

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

(Обратите внимание, что \w соответствует 0-9 и _.Следующие результаты могут дать лучшие результаты: /\b.*?ice\b.*?/i)


ОБНОВЛЕНИЕ
Для сопоставления имен файлов (не должно содержать пробелов):

/\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);
0 голосов
/ 14 апреля 2011

попробуйте это:

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

print_r($matches);
0 голосов
/ 14 апреля 2011

1.Вы хотите прочитать слово внутри тегов HTML тоже как атрибут, текстовое имя?2. Или только видимая часть веб-страницы?

для # 1: решения просты и уже есть, как упоминалось в других ответах.

для # 2: используйте класс PHP DOMDOCUMENT и извлекитеи искать только в innerHTML.документация здесь:

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

посмотрите на это, например:

PHP DOMDocument разбор HTML-теги

0 голосов
/ 14 апреля 2011

Для этого потребуется некоторое использование регулярных выражений. Ниже я использую 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";
    }
}
?>
...