Исходники на PHP
Kanzler
Любитель
2/18/2006, 1:31:40 AM
Исходники на PHP выкладываем с кратким описанием...
Начну первым:
Для начала замечательный справочник по PHP. Описаны все основные функции. Рекомендую людям начинающим. Общий размер 416 кб.
Так как архивы *.rar загружать нельзя: скачайте все 4 файла. Переименуйте их расширение в .rar. И нажмите распоковать.
Первая часть.
Начну первым:
Для начала замечательный справочник по PHP. Описаны все основные функции. Рекомендую людям начинающим. Общий размер 416 кб.
Так как архивы *.rar загружать нельзя: скачайте все 4 файла. Переименуйте их расширение в .rar. И нажмите распоковать.
Первая часть.
Kanzler
Любитель
2/18/2006, 1:33:14 AM
Вторая часть.
Kanzler
Любитель
2/18/2006, 1:34:23 AM
Третья часть.
Kanzler
Любитель
2/18/2006, 1:35:10 AM
Четвертая (последняя) часть.
Kanzler
Любитель
2/18/2006, 4:26:10 PM
Функция для конвертирования ББ-кодов в HTML-код:
CODE
<?php
function bb_to_html($content) {
// Переносы строк
$content = str_replace("\n", "<br />", $content);
// Жирный, Курсив (Наклонный), Подчеркнутый, Перечеркнутый
$content = preg_replace("/\[B\](.+?)\[\/B\]/", "<b>\\1</b>", $content);
$content = preg_replace("/\[I\](.+?)\[\/I\]/", "<i>\\1</i>", $content);
$content = preg_replace("/\[U\](.+?)\[\/U\]/", "<u>\\1</u>", $content);
$content = preg_replace("/\[S\](.+?)\[\/S\]/", "<s>\\1</s>", $content);
// Размер шрифта
$content = preg_replace("/\[SIZE=(.+?)\](.+?)\[\/SIZE\]/", "<font size=\"\\1\">\\2</font>", $content);
// Цвет шрифта
$content = preg_replace("/\[COLOR=(.+?)\](.+?)\[\/COLOR\]/", "<font color=\"\\1\">\\2</font>", $content);
// Выравнивание (По левому краю, По центру, По правому краю)
$content = preg_replace("/\[LEFT\](.+?)\[\/LEFT\]/", "<div align=\"left\">\\1</div>", $content);
$content = preg_replace("/\[CENTER\](.+?)\[\/CENTER\]/", "<div align=\"center\">\\1</div>", $content);
$content = preg_replace("/\[RIGHT\](.+?)\[\/RIGHT\]/", "<div align=\"right\">\\1</div>", $content);
// Вставить изображение
$content = preg_replace("/\[IMG\](.+?)\[\/IMG\]/", "<img src=\"\\1\" border=\"0\">", $content);
// Цитата
$content = preg_replace("/\[Q\](.+?)\[\/Q\]/", "<b>Цитата:</b><br /><div class=\"quote\">\\1</div>", $content);
// Смайлики
$content = preg_replace("/\*(.+?)\*/", "<img src=\"/images/smiles/\\1.gif\" border=\"0\">", $content);
return $content;
}
// Тест функции
$text = "[COLOR=blue]TEXT[/COLOR]";
$text = bb_to_html($text);
echo $text;
?>
CODE
<?php
function bb_to_html($content) {
// Переносы строк
$content = str_replace("\n", "<br />", $content);
// Жирный, Курсив (Наклонный), Подчеркнутый, Перечеркнутый
$content = preg_replace("/\[B\](.+?)\[\/B\]/", "<b>\\1</b>", $content);
$content = preg_replace("/\[I\](.+?)\[\/I\]/", "<i>\\1</i>", $content);
$content = preg_replace("/\[U\](.+?)\[\/U\]/", "<u>\\1</u>", $content);
$content = preg_replace("/\[S\](.+?)\[\/S\]/", "<s>\\1</s>", $content);
// Размер шрифта
$content = preg_replace("/\[SIZE=(.+?)\](.+?)\[\/SIZE\]/", "<font size=\"\\1\">\\2</font>", $content);
// Цвет шрифта
$content = preg_replace("/\[COLOR=(.+?)\](.+?)\[\/COLOR\]/", "<font color=\"\\1\">\\2</font>", $content);
// Выравнивание (По левому краю, По центру, По правому краю)
$content = preg_replace("/\[LEFT\](.+?)\[\/LEFT\]/", "<div align=\"left\">\\1</div>", $content);
$content = preg_replace("/\[CENTER\](.+?)\[\/CENTER\]/", "<div align=\"center\">\\1</div>", $content);
$content = preg_replace("/\[RIGHT\](.+?)\[\/RIGHT\]/", "<div align=\"right\">\\1</div>", $content);
// Вставить изображение
$content = preg_replace("/\[IMG\](.+?)\[\/IMG\]/", "<img src=\"\\1\" border=\"0\">", $content);
// Цитата
$content = preg_replace("/\[Q\](.+?)\[\/Q\]/", "<b>Цитата:</b><br /><div class=\"quote\">\\1</div>", $content);
// Смайлики
$content = preg_replace("/\*(.+?)\*/", "<img src=\"/images/smiles/\\1.gif\" border=\"0\">", $content);
return $content;
}
// Тест функции
$text = "[COLOR=blue]TEXT[/COLOR]";
$text = bb_to_html($text);
echo $text;
?>
Kanzler
Любитель
2/18/2006, 4:27:19 PM
Данная функция выводит информацию о посетителе:
1. Обычный IP (Proxy)
2. Прямой IP (Реальный IP, если ипользовать специальный proxy - недоступен)
3. Откуда пришли
4. Куда пришли (Адрес странички, где запущен скрипт)
5. Браузер и ОС
6. Текущая дата
7. Статус gZip (Поддержка сжатия страниц браузером)
CODE
<?php
function user_info() {
// IP (Через Proxy)
$info['proxy_ip'] = $_SERVER['REMOTE_ADDR'];
// IP (Прямой)
$info['line_ip'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
// Откуда пришли (Предыдущая страница)
$info['referer'] = $_SERVER['HTTP_REFERER'];
// Куда пришли (Адрес страницы, на которой выполняется этот скрипт)
$info['uri'] = $_SERVER['REQUEST_URI'];
// Браузер и ОС
$info['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
// Текущая дата в формате "01.01.2006 | 00:00"
$info['date'] = date("d.m.Y | H:i");
// Статус gZip (Поддерживает ли браузер сжатие)
if ($_SERVER['SERVER_PROTOCOL'] == "HTTP/1.1") {
$info['gzip'] = 1;
} else {
$info['gzip'] = 0;
}
echo "<pre>";
print_r($info);
echo "</pre>";
}
user_info();
?>
1. Обычный IP (Proxy)
2. Прямой IP (Реальный IP, если ипользовать специальный proxy - недоступен)
3. Откуда пришли
4. Куда пришли (Адрес странички, где запущен скрипт)
5. Браузер и ОС
6. Текущая дата
7. Статус gZip (Поддержка сжатия страниц браузером)
CODE
<?php
function user_info() {
// IP (Через Proxy)
$info['proxy_ip'] = $_SERVER['REMOTE_ADDR'];
// IP (Прямой)
$info['line_ip'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
// Откуда пришли (Предыдущая страница)
$info['referer'] = $_SERVER['HTTP_REFERER'];
// Куда пришли (Адрес страницы, на которой выполняется этот скрипт)
$info['uri'] = $_SERVER['REQUEST_URI'];
// Браузер и ОС
$info['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
// Текущая дата в формате "01.01.2006 | 00:00"
$info['date'] = date("d.m.Y | H:i");
// Статус gZip (Поддерживает ли браузер сжатие)
if ($_SERVER['SERVER_PROTOCOL'] == "HTTP/1.1") {
$info['gzip'] = 1;
} else {
$info['gzip'] = 0;
}
echo "<pre>";
print_r($info);
echo "</pre>";
}
user_info();
?>
Kanzler
Любитель
2/18/2006, 4:30:01 PM
Привожу функцию вывода случайной картинки. Чаще всего такая функция используется для вывода случайного баннера.
Условия:
1. Все картинки должны лежать в папке "banners" (Можно изменить)
2. Все картинки должны иметь одинаковый формат (В данном случае .gif, можно изменить)
3. Все картинки должны иметь названия типа 1.gif, 2.gif, 3.gif и т.д.
CODE
<?php
// Функция
function rand_img($count) {
$random = rand(1, $count);
$img = "banners/".$random.".gif"; // Здесь указываем папку и формат
echo "<img src=\"".$img."\" border=\"0\" />";
}
// Тест
rand_img(5); // 5 - количество баннеров в папке "banners"
?>
--------
Результат будет примерно такой:
CODE
<img src="banners/2.gif" border="0" />
Условия:
1. Все картинки должны лежать в папке "banners" (Можно изменить)
2. Все картинки должны иметь одинаковый формат (В данном случае .gif, можно изменить)
3. Все картинки должны иметь названия типа 1.gif, 2.gif, 3.gif и т.д.
CODE
<?php
// Функция
function rand_img($count) {
$random = rand(1, $count);
$img = "banners/".$random.".gif"; // Здесь указываем папку и формат
echo "<img src=\"".$img."\" border=\"0\" />";
}
// Тест
rand_img(5); // 5 - количество баннеров в папке "banners"
?>
--------
Результат будет примерно такой:
CODE
<img src="banners/2.gif" border="0" />
DELETED
Акула пера
2/21/2006, 2:40:08 AM
Очень интересные алгоритмы. Грех плюс в репу не поставить...
DELETED
Акула пера
2/26/2006, 5:53:14 PM
а зачем писать так?
echo "<img src=\"".$img."\" border=\"0\" />"; ???
ведь при использование двойных ковычек PHP исчет в нутри переменные и заменяет их на значения т.е. строки в двойных ковычках обрабатываються дольше...
можно было сделать так
echo '<img src="'.$img.'" border="0" />"; работает быстрее читабельность выше (т.к. нет слэшей перед кавычками)
а еще можно так показывать случайный банер
CODE <?
//Массив с именами фаилов
$banners=array(
'banner_1.gif',
'banner_2.gif',
'banner_3.gif',
'banner_4.gif',
'banner_5.gif',
'banner_6.gif'
);
//Выводим заголовок (банеры только в GIFe)
header("Content-type: image/gif");
//Читаем и выводим содержимое фаила, элемент массива выбераеться случайно
readfile ($_SERVER['DOCUMENT_ROOT'].'/banners/'.$banners[rand(0,count($banners)-1)]);
?>
результат работы скрипта - картинка т.е. скрипт нужно иуказывать в качестве src для img
CODE <img src="banner.php" border="0">
echo "<img src=\"".$img."\" border=\"0\" />"; ???
ведь при использование двойных ковычек PHP исчет в нутри переменные и заменяет их на значения т.е. строки в двойных ковычках обрабатываються дольше...
можно было сделать так
echo '<img src="'.$img.'" border="0" />"; работает быстрее читабельность выше (т.к. нет слэшей перед кавычками)
а еще можно так показывать случайный банер
CODE <?
//Массив с именами фаилов
$banners=array(
'banner_1.gif',
'banner_2.gif',
'banner_3.gif',
'banner_4.gif',
'banner_5.gif',
'banner_6.gif'
);
//Выводим заголовок (банеры только в GIFe)
header("Content-type: image/gif");
//Читаем и выводим содержимое фаила, элемент массива выбераеться случайно
readfile ($_SERVER['DOCUMENT_ROOT'].'/banners/'.$banners[rand(0,count($banners)-1)]);
?>
результат работы скрипта - картинка т.е. скрипт нужно иуказывать в качестве src для img
CODE <img src="banner.php" border="0">
ShadowS
Новичок
4/19/2006, 5:00:36 AM
Извините немножко не в тему но все же.
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
blablabla
Новичок
4/19/2006, 6:54:37 AM
(ShadowS @ 19.04.2006 - время: 01:00) Извините немножко не в тему но все же.
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
В самом начале Kanzler выложил 4 части справочника по пхп. И начинай с них_
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
В самом начале Kanzler выложил 4 части справочника по пхп. И начинай с них_
OutSideR
Грандмастер
4/19/2006, 5:51:48 PM
(ShadowS @ 19.04.2006 - время: 00:00)Извините немножко не в тему но все же.
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
В разделе "Компьютерная литература..., Раздел "Web" (web программирование и дизайн)" IT-Академии SexNarod.ru много хорошей литературы по PHP.
Загляни сюда
Пожалуйста посоветуйте какую нибудь книжку человеку который хочет научиться делать хорошие сайты на рНр
В разделе "Компьютерная литература..., Раздел "Web" (web программирование и дизайн)" IT-Академии SexNarod.ru много хорошей литературы по PHP.
Загляни сюда
GrAnd
Профессионал
4/28/2006, 6:26:23 PM
Пусть есть MySQL-выборка $result, отсортированная по какому либо ключу с именем $key. В этой выборке необходимо находить элементы с конкретным значением $value этого ключа и обрабатывать их. Либо начинать обработку начиная с найденного элемента. Либо обрабатывть ближайшее окружение найденного элемента.
Конкретно я использовал это в таком случае:
При формировании странички с информацией необходимо сформировать также ссылку на следующую и предыдущую информацию. Если бы информационные записи в БД имели порядковые номера, то проблем не было бы. Но они могут быть прорежены - начинаться нумерация может с 16, а потом идти 20, 36, 111 и т.д. Т.е. это даже не нумерация, а некий приоритет, определяющий порядок следования. Или вообще нумерация может быть не числовой, а буквенной. Забивать в каждую запись ключ следующей и предыдущей записи не следует, т.к. структура страниц динамическая и при добавлении/удалении страниц, а так же при изменении приоритетов следования, накладные расходы по поддержанию целостности и непротиворечивости этой избыточной информации могут быть значительными.
В этом случае, конечно, можно было бы получить сначала информацию по искомой записи, определить ее приоритет, а потом сделать 2 выборки - по записям с меньшим приоритетом и с большим. Но это не универсальный подход. И так же вместо одной выборки MySQL делает 3.
Поэтому при доступе к записи с ключом-приоритетом N необходимо в единственной выборке найти (если есть) информацию относящуюся к ней, а также найти значения ключей записей, которые ее окружают.
Вторая часть задачи решается легко, если уже найдена запись с искомым ключом. А найти ее удобнее всего в данном случае при помощи двоичного поиска. Двоичный поиск используется очень часто, но мало кто может реализовать его правильно и компактно.
Вот привожу маленький скрипт, который:
1. Находит в выборке номер (начиная с 0) самой первой записи с заданным значением ключа и возвращает этот номер.
2. Если заданный ключ не найден, то возвращается номер первой записи с значением ключа больше заданного.
3. Если все записи в выборке имеют значение ключа меньше заданного, то возвращается число записей в выборке (как бы номер записи, следующей за последней.
Ну а вот сама функция:
CODE <?php
function message_die($errno, $error, $file, $line)
{
if ($errno)
{
echo '<p><b>Error $errno $file($line):</b> $error';
die();
}
}
function bin_search($result, $key, $value)
{
$l = 0; $r = @mysql_num_rows($result);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
while ($l != $r)
{
$m = ($l + $r) >> 1;
@mysql_data_seek($result, $m);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
$row = @mysql_fetch_assoc($result);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
if ($row[$key] < $value)
{
$l = $m + 1;
}
else
{
$r = $m;
}
}
return $r;
}
?>
Конкретно я использовал это в таком случае:
При формировании странички с информацией необходимо сформировать также ссылку на следующую и предыдущую информацию. Если бы информационные записи в БД имели порядковые номера, то проблем не было бы. Но они могут быть прорежены - начинаться нумерация может с 16, а потом идти 20, 36, 111 и т.д. Т.е. это даже не нумерация, а некий приоритет, определяющий порядок следования. Или вообще нумерация может быть не числовой, а буквенной. Забивать в каждую запись ключ следующей и предыдущей записи не следует, т.к. структура страниц динамическая и при добавлении/удалении страниц, а так же при изменении приоритетов следования, накладные расходы по поддержанию целостности и непротиворечивости этой избыточной информации могут быть значительными.
В этом случае, конечно, можно было бы получить сначала информацию по искомой записи, определить ее приоритет, а потом сделать 2 выборки - по записям с меньшим приоритетом и с большим. Но это не универсальный подход. И так же вместо одной выборки MySQL делает 3.
Поэтому при доступе к записи с ключом-приоритетом N необходимо в единственной выборке найти (если есть) информацию относящуюся к ней, а также найти значения ключей записей, которые ее окружают.
Вторая часть задачи решается легко, если уже найдена запись с искомым ключом. А найти ее удобнее всего в данном случае при помощи двоичного поиска. Двоичный поиск используется очень часто, но мало кто может реализовать его правильно и компактно.
Вот привожу маленький скрипт, который:
1. Находит в выборке номер (начиная с 0) самой первой записи с заданным значением ключа и возвращает этот номер.
2. Если заданный ключ не найден, то возвращается номер первой записи с значением ключа больше заданного.
3. Если все записи в выборке имеют значение ключа меньше заданного, то возвращается число записей в выборке (как бы номер записи, следующей за последней.
Ну а вот сама функция:
CODE <?php
function message_die($errno, $error, $file, $line)
{
if ($errno)
{
echo '<p><b>Error $errno $file($line):</b> $error';
die();
}
}
function bin_search($result, $key, $value)
{
$l = 0; $r = @mysql_num_rows($result);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
while ($l != $r)
{
$m = ($l + $r) >> 1;
@mysql_data_seek($result, $m);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
$row = @mysql_fetch_assoc($result);
message_die(@mysql_errno(), @mysql_error(), __FILE__, __LINE__);
if ($row[$key] < $value)
{
$l = $m + 1;
}
else
{
$r = $m;
}
}
return $r;
}
?>
Kom_JIeonoJIbg
Любитель
7/13/2006, 6:01:38 AM
В продолжение темы о случайном выводе баннеров:
<?php
function bs($dr){
$dir=opendir($dr);
$banners=array();
while(false!==($fl=readdir($dir))){
//добавляем в массив только файлы с "баннерными" расширениями (JPG, GIF)
//каталоги пропускаются
//т. е. совместно с баннерами в той же папке могут
//быть любые другие файлы
if($fl!="." && $fl!=".." && !is_dir($dr.'/'.$fl) && preg_match("/^\d*\.jpg|\w*\.jpg|\d*\.gif|\w*\.gif/i", $fl)){
$banners=$fl;
}
}
closedir($dir);
return $banners;//массив подходящих файлов в директории $dr
}
$banners=bs('./ip');
$random=rand(0, sizeof($banners)-1);
echo '<img src="https://docs.loc/scripts/view_banners/ip/'.$banners.'">';//примерно такой результат
?>
<?php
function bs($dr){
$dir=opendir($dr);
$banners=array();
while(false!==($fl=readdir($dir))){
//добавляем в массив только файлы с "баннерными" расширениями (JPG, GIF)
//каталоги пропускаются
//т. е. совместно с баннерами в той же папке могут
//быть любые другие файлы
if($fl!="." && $fl!=".." && !is_dir($dr.'/'.$fl) && preg_match("/^\d*\.jpg|\w*\.jpg|\d*\.gif|\w*\.gif/i", $fl)){
$banners=$fl;
}
}
closedir($dir);
return $banners;//массив подходящих файлов в директории $dr
}
$banners=bs('./ip');
$random=rand(0, sizeof($banners)-1);
echo '<img src="https://docs.loc/scripts/view_banners/ip/'.$banners.'">';//примерно такой результат
?>
Аrtur
Удален 12/1/2006, 2:36:37 AM
Предотвращает проведение XSS атак, осуществляемых манипуляциями строкой браузера.
CODE
function xss () {
$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));
if ($url) {
if ((strpos($url, '<') !== false) ||
(strpos($url, '>') !== false) ||
(strpos($url, '"') !== false) ||
(strpos($url, './') !== false) ||
(strpos($url, '../') !== false) ||
(strpos($url, '\'') !== false) ||
(strpos($url, '.php') !== false)
)
{
die("Hack!");
}
}
}
Вызывать до начала работы основной части скрипта.
CODE
function xss () {
$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));
if ($url) {
if ((strpos($url, '<') !== false) ||
(strpos($url, '>') !== false) ||
(strpos($url, '"') !== false) ||
(strpos($url, './') !== false) ||
(strpos($url, '../') !== false) ||
(strpos($url, '\'') !== false) ||
(strpos($url, '.php') !== false)
)
{
die("Hack!");
}
}
}
Вызывать до начала работы основной части скрипта.
Kom_JIeonoJIbg
Любитель
12/2/2006, 3:23:21 AM
возвращает массив файлов в директории с определённым расширением, в данном случае с расширением, содержащим только алфавитные символы (определяемые символом \w):
$dr - путь и название директории.
<?php function filesindir($dr){
$dir=opendir($dr);
$ary=array();
while(false!==($fl=readdir($dir))){
if($fl!="." && $fl!=".." && !preg_match("/^.*\.\w*//*i", $fl) && !is_dir($dr.'/'.$fl)){
$ary=$fl;
}
}
closedir($dir);
return $ary;
}?>
и, чтобы несколько сообщений не оставлять, ещё одна функция:
Скрипт для перевода текста из транслита и обратно.
Синтаксис:
translate($string, $type, $yes_no, $ary);
$string - текст, который нужно перетранслировать.
$type - тип транслита, возможные значения: 'ru' - из
транслита сделать русский текст и 'tr' - наоборот.
$yes_no - подключать или нет внешние массивы.
$ary - подключаемый массив (такой же структуры, как и встроенный).
<?php
function translate($string, $type, $yes_no, $ary){
if(!$yes_no){
$trans_s=array('\'','yo','zh','sh','ch','sch','ye','yu','ya','a','b','v','g','d','e','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','`','y');
$kir_s=array('ь','ё','ж','ш','ч','щ','э','ю','я','а','б','в','г','д','е','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ъ','ы');
$trans_p=array('\'','Yo','Zh','Sh','Ch','Sch','Ye','Yu','Ya','A','B','V','G','D','E','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','H','C','Y');
$kir_p=array('Ь','Ё','Ж','Ш','Ч','Щ','Э','Ю','Я','А','Б','В','Г','Д','Е','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ы');
}elseif($yes_no){
$trans_s=$ary;
$kir_s=$ary;
$trans_p=$ary;
$kir_p=$ary;
}
if($type=='ru'){
$string=str_replace($trans_s, $kir_s, $string);
$string=str_replace($trans_p, $kir_p, $string);
}elseif($type=='tr'){
$string=str_replace($kir_s, $trans_s, $string);
$string=str_replace($kir_p, $trans_p, $string);
}
return $string;
}
?>
ЗЫ: эм.. первую функцию я уже приводил.. ну ладно, тогда это описание к ней )
$dr - путь и название директории.
<?php function filesindir($dr){
$dir=opendir($dr);
$ary=array();
while(false!==($fl=readdir($dir))){
if($fl!="." && $fl!=".." && !preg_match("/^.*\.\w*//*i", $fl) && !is_dir($dr.'/'.$fl)){
$ary=$fl;
}
}
closedir($dir);
return $ary;
}?>
и, чтобы несколько сообщений не оставлять, ещё одна функция:
Скрипт для перевода текста из транслита и обратно.
Синтаксис:
translate($string, $type, $yes_no, $ary);
$string - текст, который нужно перетранслировать.
$type - тип транслита, возможные значения: 'ru' - из
транслита сделать русский текст и 'tr' - наоборот.
$yes_no - подключать или нет внешние массивы.
$ary - подключаемый массив (такой же структуры, как и встроенный).
<?php
function translate($string, $type, $yes_no, $ary){
if(!$yes_no){
$trans_s=array('\'','yo','zh','sh','ch','sch','ye','yu','ya','a','b','v','g','d','e','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','`','y');
$kir_s=array('ь','ё','ж','ш','ч','щ','э','ю','я','а','б','в','г','д','е','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ъ','ы');
$trans_p=array('\'','Yo','Zh','Sh','Ch','Sch','Ye','Yu','Ya','A','B','V','G','D','E','Z','I','J','K','L','M','N','O','P','R','S','T','U','F','H','C','Y');
$kir_p=array('Ь','Ё','Ж','Ш','Ч','Щ','Э','Ю','Я','А','Б','В','Г','Д','Е','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ы');
}elseif($yes_no){
$trans_s=$ary;
$kir_s=$ary;
$trans_p=$ary;
$kir_p=$ary;
}
if($type=='ru'){
$string=str_replace($trans_s, $kir_s, $string);
$string=str_replace($trans_p, $kir_p, $string);
}elseif($type=='tr'){
$string=str_replace($kir_s, $trans_s, $string);
$string=str_replace($kir_p, $trans_p, $string);
}
return $string;
}
?>
ЗЫ: эм.. первую функцию я уже приводил.. ну ладно, тогда это описание к ней )
Volonter-dic
Новичок
3/8/2007, 5:43:10 AM
а ПХП вообще трудный язык?
Platinum PROFI
Мастер
3/8/2007, 3:32:55 PM
Хех. Что есть в твоем понимании сложный? Всё, что нужно - логика и PHP-интерпретатор. А просто и легко нигде вначале не бывает, профессионализм приходит со временем...
P.S. Ты более конкретные чтоль вопросы задавай...
P.S. Ты более конкретные чтоль вопросы задавай...
DELETED
Акула пера
3/16/2007, 5:53:43 PM
Скрипт позволяющий создавать сервис загрузок картинок.
c0d3r
Интересующийся
3/19/2007, 9:37:55 PM
Скрипт для проверки состояния апача и псибнц. На фёрствдс очень актуально в связи с постоянными падениями соединений на их дедиках
CODE
<?php
$host='mysite.ru';
$psyuser='psy';
$ch=curl_init('http://'.$host);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$a=curl_exec($ch);
if($a===false){
exec('httpd -k restart');
}
if(!@fsockopen('127.0.0.1',31337)) exec('su '.$psyuser.' -c \'cd /home/'.$psyuser.'/psybnc/; ./psybnc\'');
?>
парсер дубликатов строк из текстовых файлов,с сортировкой
CODE
<?
$foutname = 'out.txt';
$filename = "in.txt";
$strings = file($filename);
$strings = array_map('trim', $strings);
$strings2 = array_unique($strings);
asort($strings2);
$file_out = fopen($foutname, "w");
foreach($strings2 as $value) {
fputs($file_out, $value."\n"); }
fclose($file_out);
?>
CODE
<?php
$host='mysite.ru';
$psyuser='psy';
$ch=curl_init('http://'.$host);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$a=curl_exec($ch);
if($a===false){
exec('httpd -k restart');
}
if(!@fsockopen('127.0.0.1',31337)) exec('su '.$psyuser.' -c \'cd /home/'.$psyuser.'/psybnc/; ./psybnc\'');
?>
парсер дубликатов строк из текстовых файлов,с сортировкой
CODE
<?
$foutname = 'out.txt';
$filename = "in.txt";
$strings = file($filename);
$strings = array_map('trim', $strings);
$strings2 = array_unique($strings);
asort($strings2);
$file_out = fopen($foutname, "w");
foreach($strings2 as $value) {
fputs($file_out, $value."\n"); }
fclose($file_out);
?>