Перейти к содержанию
СофтФорум - всё о компьютерах и не только

php - Question


Рекомендуемые сообщения

Дорого времени суток!

Народ, кто пользовался функцией в PHP - parse_ini_file() скажите, все ли символы он читает, или есть какие-то исключения. Т.е., если я буду писать CGI-запросы в ini-файле, функция все поймет или будет ругаться?

Искал в manual-е - пусто, там есть только то, что не алфавитные буквы и не цифры, пишуться в кавычках. Однако как быть со служебными символами?

Заранее спасибо за ваши предложения.

С уважением к вашему форуму.

Ссылка на комментарий
Поделиться на другие сайты

Я не совсем понял, то, что ты хочешь, но объясню на примере:

Имеем:

1. Текстовый ini-файл такого вида:

link.txt

-----------------------

[first_part]

"1="Новости::index.php?id=news";

2="История сайта::index.php?id=site_his";

[two_part]

1="Новости софта::index.php?id=soft_news";

2="Новости игр::index.php?id=game_news";

-----------------------

2. Скрипт генерации линка и контента из ini-файла:

links.php

------------------------------

<?

function links_global($partition) {

$links_array=null;

$links_array=parse_ini_file("links.txt", TRUE); #указываем ini-файл

for ($i=1; $i<=count($links_array[$partition]); $i++) {

list($link_name, $link_url)=explode("::", $links_array[$partition][$i]);

?>

<!-- Здесь можно разместить и свои таблички -->

<td><a href="<?=$link_url;?>">$link_name</a></td>

<? }

}

?>

<table><tr><? links_global("first_part"); ?></tr>

<tr><? links_global("two_part"); ?></tr>

</table>

<? if (!isset($id)) { $id="news"; } ?>

<font face="Georgia"><? require ($id.".txt"); ?></font>

------------------------------

3. Текстовые файлы с контеном - "news.txt", "site_his.txt" и т. д.

Если успел заметить, то $id - это имя файла с котнтентом без расширения.

В моем варианте, если не брать реализацию цикла - строки с линкамм из ini-файла должны выглядеть так: "$links_array['first_part']['1']", "$links_array['two_part']['1']" и т. д. и т. п.

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

P. S.: Код писал по памяти, может что-нибудь не работать, если есть вопросы - пиши на мыло. :sm(100):

Добавлено : [mergetime]1097704517[/mergetime]

Ой, опечатался:

В текстовом ini-файле должно быть не :

"1="Новости::index.php?id=news"; ,а

1="Новости::index.php?id=news";

Вроде все.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо,

Но то что ты пишешь, понятно! С такими вещами я сталкивался и здесь никаких проблем.

Я имел ввиду, все ли символы допустимы в двойных кавычках (""), или же есть какие-то исключения.

Например,

если у меня в ini-файле запись:

sss="-$\n"

то что функция parse_ini_file() об этом скажет. М.б. это для нее будет символ перехода строки, а м.б. просто последовательность символов "\" и "n"

Я вот это имел ввиду!

Ссылка на комментарий
Поделиться на другие сайты

Спасибо,

Но то что ты пишешь, понятно! С такими вещами я сталкивался и здесь никаких проблем.

Я имел ввиду, все ли символы допустимы в двойных кавычках (""), или же есть какие-то исключения.

Например,

если у меня в ini-файле запись:

sss="-$\n"

то что функция parse_ini_file() об этом скажет. М.б. это для нее будет символ перехода строки, а м.б. просто последовательность символов "\" и "n"

Я вот это имел ввиду!

Ссылка на комментарий
Поделиться на другие сайты

Вот как я решил эту проблему:

<?php

function file_write($fn){

$ar=array();

$f=fopen($fn,"w+");

for($i=1;$i<=256;$i++){

$ar[$i]="s".$i."="."\"".chr($i)."\"".chr(13).chr(10);

$t=fwrite($f,$ar[$i]);

}

if($t==-1) return -1;

}

$f='C:/web/s_check.ini';

file_write($f);

$a=parse_ini_file($f);

print_r($a);

for($i=0;$i<=256;$i++){

$j="s".$i;

if($a[$j]=="\"".ord($i)."\"") print("<br>".$i);

if($a[$j]==ord($i)) print("<br>".$i);

}

?>

Оказывается, что все символы, если они указаны в кавычках функция parse_ini_file() - понимает. Однако я не проверил комбинации. Например, как php синтерпретирует "0D0A" - символ новой строки?

Вот, но в-общем все неплохо!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...