Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Шаблонизация в PHP и символы <!-- / 10 сообщений из 10, страница 1 из 1
02.02.2016, 16:49
    #39161259
Alexsalog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
Разбираюсь с неким сайтом, как он работает. Обнаружил конструкции: <!--include_html..
Поскольку в программном коде ничего такого не обнаружил подозреваю что это родная шаблонизация в PHP.
Так ли это ?

Еще определил что на разных хостингах php по разному реагирует на сочетание <!--.
В одном случае требуется пробел, а в другом он наоборот не нужен. Почему ? Где это может настраиваться ?
...
Рейтинг: 0 / 0
02.02.2016, 16:56
    #39161268
Alexsalog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
Упс... поискал по другому, нашел некий парсер. Вопрос снимается. Просто сильно тороплюсь.
...
Рейтинг: 0 / 0
03.02.2016, 07:49
    #39161583
Alexsalog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
Не могу понять почему шаблонизатор работает неправильно на моем хостинге.
Вот участок кода:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?
				$start = strpos($html, '<!--start_'.$name.'-->');
				$end = strpos($html, '<!--end_'.$name.'-->');

				if ($start !== false and $end !== false) {

					$row_base = ltrim(substr(
						$html, 
						($start + strlen("<!--start_$name-->")), 
						($end - $start - strlen("<!--start_$name-->"))
						));
?>



Переменные start и end вычисляются, но при вырезании строки с помощью substr получается совсем не тот участок html который нужен.
Что может влиять на результат ?

html - это текст в utf-8 с переносами строк.

Что интересно на старом хостинге это работает. Но там ограничен доступ к системной информации.
...
Рейтинг: 0 / 0
03.02.2016, 08:19
    #39161590
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
AlexsalogНе могу понять почему шаблонизатор работает неправильно на моем хостинге.
что значит неправильно?
вырезает не то что нужно, вообще не вырезает, вырезает лишнее ... ?
...
Рейтинг: 0 / 0
03.02.2016, 11:40
    #39161742
Alexsalog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
r uAlexsalogНе могу понять почему шаблонизатор работает неправильно на моем хостинге.
что значит неправильно?
вырезает не то что нужно, вообще не вырезает, вырезает лишнее ... ? Я честно говоря в полном... растерянности.

Вот допустим у нас есть переменная:

Код: php
1.
$html = '<html>текст1 текст 2 текст3 <!--start_region-->region_template<!--end_region--> текст4 текст5 текст6  </html>'



Притом замечу реальное содержимое $html - это текст в utf-8 и он содержит переносы строк.

По идее если программа вычислила с помощью функции strpos позицию подстроки <!--start_region-->, то потом результат функции substr должен показывать то, что содержится в $html после <!--start_region-->:

Код: php
1.
2.
3.
$start =  strpos($html, "<!--start_region-->");

echo substr($html,$start,100);



То есть типа: <!--start_region-->region_template<!--end_region--> текст4 текст5 ...

Однако переменная $start почему-то вычисляется бОльшей, чем должна быть в реальности и указывает на текст, расположенный сильно позже искомого образца.

Вопрос - че за фигня ?
...
Рейтинг: 0 / 0
03.02.2016, 11:41
    #39161746
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
AlexsalogПеременные start и end вычисляются, но при вырезании строки с помощью substr получается совсем не тот участок html который нужен.
Что может влиять на результат ?

html - это текст в utf-8Вы пытаетесь применить функции для однобайтовых строк к многобайтовым строкам. Потому и "едет". Используйте http://php.net/manual/ru/ref.mbstring.php
...
Рейтинг: 0 / 0
03.02.2016, 12:34
    #39161850
Alexsalog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
vkleAlexsalogПеременные start и end вычисляются, но при вырезании строки с помощью substr получается совсем не тот участок html который нужен.
Что может влиять на результат ?

html - это текст в utf-8Вы пытаетесь применить функции для однобайтовых строк к многобайтовым строкам. Потому и "едет". Используйте http://php.net/manual/ru/ref.mbstring.php

Да, сработало. Но только почему на старом сайте работало без всего этого ? Там тоже кодировка utf-8.
А работало все с простыми однобайтными функциями. Может есть какая-то общая установка, которая заставляет работать функции типа substr( так же как mb_substr( ?
...
Рейтинг: 0 / 0
03.02.2016, 12:52
    #39161877
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
AlexsalogМожет есть какая-то общая установка, которая заставляет работать функции типа substr( так же как mb_substr( ? Есть .
...
Рейтинг: 0 / 0
03.02.2016, 13:05
    #39161898
Alexsalog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
vkleAlexsalogМожет есть какая-то общая установка, которая заставляет работать функции типа substr( так же как mb_substr( ? Есть .

Последний вопрос - как установить это в рантайме ?
...
Рейтинг: 0 / 0
03.02.2016, 13:23
    #39161928
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шаблонизация в PHP и символы <!--
http://php.net/manual/ru/mbstring.configuration.php#ini.mbstring.func-overload Эта опция может быть изменена только в файле php.ini.
Говорят, в каких-то случаях в .htaccess и в httpd.conf можно настроить, но лично я не проверял.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Шаблонизация в PHP и символы <!-- / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]