Сравнение строки из файла и шаблона

DanGien

Новичок
Сравнение строки из файла и шаблона

Приветствую!

Возникла такая проблема.

Есть 2 файла:
meta.php
teg.php

Файл meta.php - открывает teg.php, читает построчно

while (! feof($fh)):
$line = fgets($fh, 4096);

Задает шаблон

$site=$_SERVER['PHP_SELF'];
$stroka = "[$site]\n";

Т.е узнает, что текущий файл, скажем,
/index.php
И помещает его в $stroka

В файле teg.php есть строка
[/index.php]

Далее в файле meta.php

if ($line == $stroka)
{
выполняются действия
}


Так вот, на локальном сервере все работает.

На сайте запускаю все, но при сравнении $line почему-то не равно $stroka

Когда пишу в meta.php

print $line;
print "<br>";
print $stroka;
exit;

выдает

[/index.php]
[/index.php]

ТАК ПОЧЕМУ они не равны на сайте, но равны на локали?

Заранее спасибо за ответ!
 

Фанат

oncle terrible
Команда форума
я бы озаботился ответом на вопрос, если бы не его явная высосанность из пальца.
пхп скрипт, который что-то ищет в другом - это весьма маловразумительная конструкция.
придумайте более жизненный пример

-~{}~ 20.03.04 02:00:

вместо print надо использовать var_dump()
 

DanGien

Новичок
Это не "высосанность":), скрипт действительно ищет строку в др. файле, идентичную строке URL страницы.

Спасибо за

вместо print надо использовать var_dump()

Выдает

string(14) "[/index.php] " string(13) "[/index.php] "

Т.е. проблема с концом строки...

Тогда такой вопрос.

Как убрать символ конца строки?
Может быть /n /r... Как это оформить?
Знаю, что

$meta = str_replace("\n", "", $meta);

Но вместо /n может быть /r и т.д.?
 

fixxxer

К.О.
Партнер клуба
DanGien Скорее всего, дело в unix/windows переносах строк.
После чтения строки делай rtrim().
А вообще, странные у тебя скрипты.

-~{}~ 20.03.04 02:22:

Хе-хе. Угадал. :)
Тебе нужно [m]rtrim[/m] == [m]chop[/m]
 

DanGien

Новичок
Заработало!!!:)

fixxxer, спасибо!

А что странного в подставлении мета-тэгов из одного файла?:)
 

Фанат

oncle terrible
Команда форума
если ты не видишь ничего странного в том, чтобы тортом есть ложку - то ничего.
 

DanGien

Новичок
Фанат, а какой твой способ?

Ну вот есть шаблон (один) для кучи файлов, но мета-тэги для каждого должны быть свои.

Конечно, с Мускулом тут проще. Но вот если хранить тэги в файлах, тогда как?
 

Фанат

oncle terrible
Команда форума
мой способ - разделять еду и посуду.
еда - это то ЧТО едят.
посуда - ЧЕМ.
 

Фанат

oncle terrible
Команда форума
блин.
есть программа, а есть данные.
программа - все время ОДНА.
как посуда.
она не меняется.
меняются - данные.

файл с пхп по определению содержит программу, которая должна обрабатывать данные.
а у тебя не пойми что.

если у тебя программа, то сделай переменную со своим мета-тегом, а не добывай его таким идиотским сопсобом.
если у тебя это файл неизвестного науке формата, то не называй его пхп.
ЧТО ЗДЕСЬ ТАИНСТВЕННОГО???

-~{}~ 20.03.04 03:29:

опять, блин, оченедной горе-писатель на пхп городит очередную машину для ковыряния, блин, в носу.

Ну вот есть шаблон (один) для кучи файлов, но мета-тэги для каждого должны быть свои
Ну и зачем для этого городить всякий бред?
$meta="bla-bla";
include ''shablon";

в шаблоне пишешь echo $meta;
и НИКАКИХ мучений!

-~{}~ 20.03.04 03:31:

блин, вот честное слово - встретил бы того козла, который придумал весь сайт в один "шаблон" запихивать... я бы его запихнул. головой в унитаз.
 

DanGien

Новичок
Фанат, спасибо за ответ!

Я тоже думал о том, чтобы прописывать мета-тэги в каждом файле. Только бывают ситуации (при динамично развивающихся сайтах), когда эти тэги надо корректировать, менять. Закачивать после этого ВЕСЬ сайт обратно не хочется. А так исправил 1 файл (который с тэгами), и никаких проблем. Это актуально для больших контент-проектов, контент которых постоянно надо оптимизировать для поисковиков, что-то менять, экспериментировать...

А большие сайты у меня не в одном шаблоне:), а для каждого раздела - свой шаблон, свой файл с мета-тэгами. Поскольку приходится проект переделывать "на лету" (более 4000 файлов с текстами), то мой способ удобнее (особенно если все закачивать надо на dial up).

А придумал этот способ тоже не я:), нашел аналог на Perl, сделал сам на php.

Такие дела...
 

Фанат

oncle terrible
Команда форума
Только бывают ситуации (при динамично развивающихся сайтах), когда эти тэги надо корректировать, менять.
Что-то ты заливаешь.
Точнее не догоняешь.
Нет НИКАКОЙ проблемы всю туже логику, которую ты реализуешь таким кривым способом, сделать по-человечески, точно так же в одном файле, который инклюдится в шаблон.
в котором прописываются зависимости тегов и страниц.
Безо всяких замен.
На нормальном хостинге это, кстати, и работать не будет, ибо по умолчанию веб-сервер может только исполнять файлы пользователя, но не стирать.

-~{}~ 20.03.04 13:08:

ну неужели трудно составить массив вида
'index.php'=>'<meta>'
и написать
echo $metas[basename($_SERVER['PHP_SELF'])];
?

-~{}~ 20.03.04 13:11:

или что-то подобное.
Но, главное, такое, где программа не является одновременно и нодом, и колбасой, которую он режет
 

DanGien

Новичок
Автор оригинала: Фанат
Что-то ты заливаешь.
Точнее не догоняешь.
Нет НИКАКОЙ проблемы всю туже логику, которую ты реализуешь таким кривым способом, сделать по-человечески, точно так же в одном файле, который инклюдится в шаблон.
в котором прописываются зависимости тегов и страниц.
Безо всяких замен.
Дык это... у меня все почти так и есть. Ничего никто не стирает и не меняет.

Один файл - сама прога, которая инклюдится в шаблон, которая выполняет basename и затем сравнивает полученное со строками, прописанными во втором файле.

А вот во втором файле как раз прописаны имена файлов и мета-тэги для каждого.

В результате полученный адрес basename сравнивается со строкой, если идентично, то берутся тэги и выводятся на экране (print $teg), после чего выводится шаблон далее. Ничего не заменяется и не стирается.

И никто никого не режет... ужас какой
:D
 

Фанат

oncle terrible
Команда форума
а зачем ты пхп-программу читаешь построчно?
вместо того, чтобы исполнять?
 

DanGien

Новичок
Автор оригинала: Фанат
а зачем ты пхп-программу читаешь построчно?
вместо того, чтобы исполнять?
Еще раз! Программа - в файле, скажем, proga.php

Сами тэги в файле, который читается построчно - скажем, tegi.php

Т.е. файл proga.php читает построчно tegi.php

Я мог обозвать tegi.txt, просто tegi, или tegi.bd

Суть не меняется. Т.е. второй файл - не программа, а хранилище тэгов. Хоть и назван тоже .php:)
 

Фанат

oncle terrible
Команда форума
это неправильно.
это сбило с толку меня, это собъет с толку еще много людей.
 
Сверху