Morfeey
@Morfeey

Обрезка превью, способы реализации, кто что посоветует?

Имеется сайт, у которого есть некий анонс состоящий из html.
Способ который я придумал:
Написать регулярку для поиска текста между тегами (нужна помощь с этим)
Пробежаться по листингу совпадений и заменить найденное на пустоту.

Не претендую на качество решения, с удовольствием посмотрю на ваши предложения, а лучше на способы реализации.
P.S: php 4.4

Есть полурабочий пример, с косяками с регуляркой из интернета

function truncate_html ($source, $length = 100) {

        $matches = array();
        preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $source, $matches);

        $replace_list = array();
        $temp_tength = 0;

        $not_replace = array('h1', 'img');
        $razn = 0;
        $result = $source;
        foreach ($matches[3] as $key => $match) {
            $tag_name = $matches[2][$key];
            if (!in_array($tag_name, $not_replace)) {
                $len_match = strlen($match);
                $temp_tength += $len_match;
                $replace_all = false;
                if ($temp_tength>$length && strlen($match)!==0) {
                    $razn = $length - $temp_tength;
                    $temp_item = substr($match, $razn);
                    $result = str_replace($temp_item, '', $result);
                    $replace_all = true;
                }
                if ($replace_all === true) {
                    $result = str_replace($match, '', $result);
                }
            }

        }
    return $result;
}

  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Вы из 2007-го вывалились?
Используйте simplexml для парсинга HTML. Ну или более продвинутые nokogiri, phpquery и т.п.
Вручную регулярками парсить не надо.
PHP 4.4 использовать не надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы