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

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" - символ новой строки?

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

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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