Как я могу найти остальную часть слова из строки внутри него в PHP?

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

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


person phpf    schedule 14.04.2011    source источник


Ответы (4)


Все, что соответствует следующему, является словом с 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);
person jensgram    schedule 14.04.2011
comment
Спасибо! У вас есть пример того, как это использовать? - person phpf; 14.04.2011
comment
@phpf Смотрите обновление. (Кстати, рассмотрите возможность использования jpe?g вместо этого, если вам нужно сопоставить как .jpeg, так и .jpg.) - person jensgram; 14.04.2011
comment
СПАСИБО! ЭТО ИМЕННО то, что я искал! :) - person phpf; 14.04.2011
comment
Эм, у меня есть еще один вопрос! Как я могу добавить больше расширений к этому фрагменту? - person phpf; 14.04.2011
comment
@phpf /\S+\.(jpe?g|gif|png)/i будет соответствовать .jpeg, .jpg, .gif и .png. - person jensgram; 14.04.2011

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

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

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

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

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

PHP DOMDocument удаляет теги HTML

person DhruvPathak    schedule 14.04.2011
comment
Я в основном хочу найти слово из строки, написанной в виде обычного текста. URL-адреса написаны на странице, поэтому я хочу получить полное имя файла из расширения (например, моя фотография: 238484534.jpeg, когда я ищу .jpeg, я получаю полное имя файла, 238484534.jpeg, в массив) - person phpf; 14.04.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";
    }
}
?>
person Igor Serko    schedule 14.04.2011

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

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

print_r($matches);
person Easen    schedule 14.04.2011