Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Количество тегов 
:(
    Опции темы
Zorak
Дата 30.9.2014, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Здраствуйте форумчани. Может гдето уже и обсуждалось, но своей темы так и ненашол.. Итак задача: нужно подсчитать количество открывающих тегов, которые существуют в тексте, и количество закрывающих для них тегов. какбы все хорошо, есть только одно но... мне кажется что проблемы в преобразование именно в текст. Вот мои телодвижения:

Код

        for ($i = 0; $i < $countTag; $i++)
        {
            $pattern = '(\<' . $listTags[$i] . '[\s|\>])'; 
            $arResult[$listTags[$i]]['open'] = preg_match_all($pattern, preg_quote($text));
            $pattern = '(\<\/' . $listTags[$i] . '\>)'; 
            $arResult[$listTags[$i]]['close'] = preg_match_all($pattern, preg_quote($text));
        }

Примерно вот так. Отдельно тестил паттерны в программах, которые умеют работать с регулярками, то считает как раз все ок. Исходя из этого мне в голову пришла мысль что чтото я в самом ПХП делаю не так. Помогите найти ошибку. Спасибо.
З.Ы. Без preg_quote() тоже не работает.

З.Ы.Ы. Забыл добавить. $text - ето полная HTML страница, стянутая по адресу, начиная с 
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"

и заканчивая
Код

</html>

Спасибо.


Это сообщение отредактировал(а) Zorak - 30.9.2014, 22:06


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
_zorn_
Дата 1.10.2014, 03:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



1. preg_quote надо применять на регулярку.
2. $pattern должен начинаться и оканчиваться с одинаковых символов, означающих начало и конец регулярки. Да и группировка с запоминанием тут вообще не к месту.
3. В символьном классе | означает именно |
Попробуйте как то так
Код

        for ($i = 0; $i < $countTag; $i++)
        {
            $pattern = '#'.preg_quote('<' . $listTags[$i] . '[\s>]','#').'#i'; //i - модификатор "без учета регистра"
            $arResult[$listTags[$i]]['open'] = preg_match_all($pattern, $text);
            $pattern = '#'.preg_quote('</' . $listTags[$i] . '>','#').'#i'; 
            $arResult[$listTags[$i]]['close'] = preg_match_all($pattern, $text);
        }

Ну и сами регулярки по моему нужно пересмотреть. Оставляю вам в качестве домашнего задания smile

Это сообщение отредактировал(а) _zorn_ - 1.10.2014, 03:37
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.