Nodin Опубликовано 12 октября, 2004 Жалоба Поделиться Опубликовано 12 октября, 2004 Дорого времени суток! Народ, кто пользовался функцией в PHP - parse_ini_file() скажите, все ли символы он читает, или есть какие-то исключения. Т.е., если я буду писать CGI-запросы в ini-файле, функция все поймет или будет ругаться? Искал в manual-е - пусто, там есть только то, что не алфавитные буквы и не цифры, пишуться в кавычках. Однако как быть со служебными символами? Заранее спасибо за ваши предложения. С уважением к вашему форуму. Ссылка на комментарий Поделиться на другие сайты Поделиться
SpitFire Опубликовано 13 октября, 2004 Жалоба Поделиться Опубликовано 13 октября, 2004 Я не совсем понял, то, что ты хочешь, но объясню на примере: Имеем: 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"; Вроде все. Ссылка на комментарий Поделиться на другие сайты Поделиться
Nodin Опубликовано 14 октября, 2004 Автор Жалоба Поделиться Опубликовано 14 октября, 2004 Спасибо, Но то что ты пишешь, понятно! С такими вещами я сталкивался и здесь никаких проблем. Я имел ввиду, все ли символы допустимы в двойных кавычках (""), или же есть какие-то исключения. Например, если у меня в ini-файле запись: sss="-$\n" то что функция parse_ini_file() об этом скажет. М.б. это для нее будет символ перехода строки, а м.б. просто последовательность символов "\" и "n" Я вот это имел ввиду! Ссылка на комментарий Поделиться на другие сайты Поделиться
Nodin Опубликовано 21 октября, 2004 Автор Жалоба Поделиться Опубликовано 21 октября, 2004 Спасибо, Но то что ты пишешь, понятно! С такими вещами я сталкивался и здесь никаких проблем. Я имел ввиду, все ли символы допустимы в двойных кавычках (""), или же есть какие-то исключения. Например, если у меня в ini-файле запись: sss="-$\n" то что функция parse_ini_file() об этом скажет. М.б. это для нее будет символ перехода строки, а м.б. просто последовательность символов "\" и "n" Я вот это имел ввиду! Ссылка на комментарий Поделиться на другие сайты Поделиться
Nodin Опубликовано 27 октября, 2004 Автор Жалоба Поделиться Опубликовано 27 октября, 2004 Вот как я решил эту проблему: <?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" - символ новой строки? Вот, но в-общем все неплохо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти