- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть такой html-код
<span style="color:#777;">текст1</span>
<span>Тек<b>к</b> <b>с</b>, т который сюда попада</b> <b>ет</b>, тоже</span>
</div>
Нужно, чтобы текст1 - не выводился;
А текст, очищался от тегов, до закрывающего див.
Тегов спан и <b> может быть любое количество.
Можно ли это осуществить через регулярные выражения, а если можно, то как?
Конечно можно. А очищать от тэгов лучше с помощью strip_tags, это правильнее будет.
Нужно, чтобы текст1 - не выводился;
Мне кажется, должно получиться примерно так:
$quote = preg_replace('/<span[^>]*777[^>]*>[^<]*<.span>/si','',$quote);В переменной $quote ваш текст.
BrokenBrake, Получилась такая штука:
//Получаем страницу, чистим;
$allowed_tags = "<div>";
echo strip_tags($results, $allowed_tags);
$results = eregi_replace("\r", '', $results);
$results = eregi_replace("\n", '', $results);
preg_match_all("/<div class=\"text\">(.*) <\/div>/", $results, $fst);
$htm1='';
foreach($fst[1] as $nam=>$val){
$htm1=$htm1 .$fst[1][$nam];
}
print $htm1;
А в ответ пустота :(
_S_, я вообще не очень в PHP разбираюсь, но в таких случаях делаю поэтапно строчка за строчкой. И php.net в помощь, конечно же.
В вашем коде у меня вызывают удивление, в частности, echo во второй строчке, двойное eregi_replace тоже странная штука, зачем? В общем, какой-то странный код, на мой дилетантский взгляд :)
BrokenBrake, Сам дилетант похлеще, но жизнь заставляет разбираться.
еcho - для прверки вывода )
Переделал так, все заработало, сенкс за помощь )
$results = eregi_replace("\r", '', $results);
$results = eregi_replace("\n", '', $results);
preg_match_all("/<div class=\"text\">(.*)\<\/div>/Ui", $results, $fst);
$htm1='';
foreach($fst[1] as $nam=>$val){
$htm1=$htm1 .$fst[1][$nam];
}
$allowed_tags = "<div>";
echo strip_tags($htm1, $allowed_tags);
preg_match_all('#<div class="text">..<span style="color:.777;">(.+?)</span>..(.+?)..</div>#is', $text, $find, PREG_SET_ORDER);foreach ($find as $key => $value)
{
$anch[$key]=explode("\r\n", strip_tags($value[2]));
}
print_r($anch);
=)
SergoZD, Попробовал твой код:
Notice: Undefined variable: anch in z:\home\t\www\g\g2.php on line 57
[Денвер: показать возможную причину ошибки]
:)
Ага, на выдаче не оттестировал просто, убегать надо было.
Если через fgets брать, то перевод строки не двумя точками, а одной заменяется. Ну а "Undefined variable" - это если ни одного нпса не найдется, проверкой на sizeof($find) обходится.
а где брать регулярные выражения для определённых целей ?
а где брать регулярные выражения для определённых целей ?
тут наверное
http://www.phpfaq.ru/regexp
тут наверное
http://www.phpfaq.ru/regexp
почитал - это слишком громоздкое описаньеце.
Для меня регулярные выражения - тоже затруднительны.
Нужно что более понятное, где много примеров и расписаны все шаблоны детельно - где что в регулярном выражение обозначает.
было бы интересно почитать.