Форум русской поддержки Joomla!® CMS
06.12.2016, 04:49:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

introtext как работает не понятно

 (Прочитано 221 раз)
0 Пользователей и 1 Гость смотрят эту тему.
hidone
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« : 20.02.2016, 11:15:29 »

Здравствуйте!

Не могу разобраться как работает introtext.
Пытаюсь в блоке вывода новостей получить из introtext содержимое <h1>Привет</h1>


Код:
$pos1 = strpos($item->introtext, '<h1>');
$pos2 = strpos($item->introtext, '</h1>');
$title_of_content = substr($item->introtext, $pos1+4, $pos2);
echo "<!---->";
echo $title_of_content;
echo "<!---->";

В итоге выводится
<!---->
"Привет"


Откуда берутся кавычки и куда делся второй комментарий <!---->?


А если выводить например так, заключить переменную в тег <b>
Код:
echo "<!---->";
echo <b>.$title_of_content.</b>;
echo "<!---->";

То вообще происходит неведомая хрень.
Выводится
<!---->
<b>"Привет"
а закрывающий тег </b> выводится на много ниже через несколько других тегов ломая весь код.

Как такое получается и что делать?



Записан
dmitry_stas
Профи
********

Репутация: +796/-4
Online Online

Сообщений: 7761



« Ответ #1 : 20.02.2016, 11:45:10 »

Цитировать
Как такое получается и что делать?

что вам известно о многобайтовых кодировках, например об UTF-8?
Записан
Wertos
Завсегдатай
*****

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 543


« Ответ #2 : 20.02.2016, 12:02:31 »

Код
preg_match_all('#<h4>(.+?)<\/h4>#isu', $item->introtext, $arr);
echo $arr[1];
 
Я бы так сделал, или использовал

Код
JString::strpos

https://api.joomla.org/cms-3/classes/JString.html
Записан
dmitry_stas
Профи
********

Репутация: +796/-4
Online Online

Сообщений: 7761



« Ответ #3 : 20.02.2016, 12:33:25 »

и JString::substr
Записан
hidone
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #4 : 20.02.2016, 15:06:55 »

что вам известно о многобайтовых кодировках, например об UTF-8?
Ничего, кроме того что я в ней сохраняю все файлы.


Вариант
Код:
$pos1 = JString::strpos($item->introtext, '<h1>');
$pos2 = JString::strpos($item->introtext, '</h1>');
$title_of_content = JString::substr($item->introtext, $pos1+4, $pos2);

никак не меняет результат.


Вариант
Код:
preg_match_all('#<h1>(.+?)<\/h1>#isu', $item->introtext, $arr);
$title_of_content = $arr[1][0];
работает, спасибо
Записан
dmitry_stas
Профи
********

Репутация: +796/-4
Online Online

Сообщений: 7761



« Ответ #5 : 20.02.2016, 15:11:02 »

никак не меняет результат.
потому что в substr 3-й параметр - это длина возвращаемой строки, а не до какого символа вернуть строку
Записан
hidone
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #6 : 20.02.2016, 15:42:34 »

Действительно, спасибо, этот вариант тоже работает
Код:
$pos1 = JString::strpos($item->introtext, '<h1>');
$pos2 = JString::strpos($item->introtext, '</h1>');
$title_of_content = JString::substr($item->introtext, $pos1+4, $pos2-4);
Записан
dmitry_stas
Профи
********

Репутация: +796/-4
Online Online

Сообщений: 7761



« Ответ #7 : 20.02.2016, 15:44:48 »

так будет правильно работать только если $pos1=0, т.е. только если <h1> в самом начале строки
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet