Joomla 1.5 Частичная замена текста статьи

Тема в разделе "Создание расширений для Joomla", создана пользователем Dagas, 16.02.2009.

  1. Offline

    Dagas Недавно здесь

    Регистрация:
    18.01.2008
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Поставил себе такую задачу - находить в тексте статьи некоторые подстроки и заменять их. В частности, хочу реализовать поиск заголовков других статей в категории. Код выглядит так:
    Код (PHP):
    1. $db = JFactory::getDBO();
    2. $query = "Здесь запрос к базе...";
    3. $db->setQuery( $query );
    4. $list = $db->loadAssocList();

    - так я получаю список статей в категории, к которой принадлежит данная статья. В частности, их заголовки $list['title']. Дальше идет обработка текста статьи:
    Код (PHP):
    1. foreach($list as $value) {
    2. $insert = "<b>".$value['title']."</b>";
    3. $row->text = str_ireplace($value['title'], $insert, $row->text);
    4. }

    Т.е. в тексте статьи должны жирным выделиться названия других статей. НО! Названия статей как правило даны с большой буквы, а в тексте они так получаются не всегда, поэтому использовал str_ireplace(), что бы не было проблем с регистром. Теперь суть - проблема с регистром осталась. Т.е. когда в тексте находит подстроку "Статья 1", обрамляет ее жирным. а если "статья 1" - пропускает без обработки. Я так понимаю, что это потому что $value['title'] не является строкой в чистом виде, а некоторым объектом, и поэтому не обрабатывается функциями преобразования регистра. По крайней мере, ни в одной функции преобразования регистра это значение не изменяется.
    Кто-нибудь сталкивался с подобным и если да, то как решали?
     
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Хм. А где мы живем? И как к нам относятся все остальные страны?

    Правильно, завидуют :)

    Поэтому о русском языке и его поддержке в стандартных функциях забудь. Возьми и перепиши функцию str_ireplace под себя.
     
  4. Offline

    Dagas Недавно здесь

    Регистрация:
    18.01.2008
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Да, такой вариант мне в голову как-то не пришел. Спасибо, попробую.

    Конечный итог изысканий привел к преобразованию текста с помощью функции mb_convert_case(), и регистрозависимой замене текста в 2 прохода. Вобщем, не совсем корректно, но другого варианта все равно не вижу.
     
    Последнее редактирование: 17.02.2009

Поделиться этой страницей

Загрузка...