Программирование HTML Простейшие примеры скриптов на PHP Sun, June 25 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Простейшие примеры скриптов на PHP Печать
Добавил(а) microsin   

Указанная секция PHP может использоваться в любом месте файла, неограниченное количество раз, вперемежку с обычным текстом html. Чтобы PHP-код начал интерпретироваться, html-страничку (расширение .htm или html) нужно переименовать в .php.

1. Простой вывод текста

< ?php echo "Hello world"; ? >

Текст можно вводить как в одинарных кавычках, так и в двойных. В функции аргументы можно передавать без скобок. Кроме echo можно использовать ключевое слово print. Отличие echo от print в том, что echo может выводить несколько строк, указанных через запятую:

< ?php 
echo  "1", " 2", '< br >';
echo  '1', " 2", "< br >";
? >

Обе эти строки выведут один и тот же результат. Одинарные кавычки отличаются от двойных тем, что одинарные отключают сканирование строки на наличие в ней переменных, например, в следующем примере только первый оператор echo выведет значение переменной:

< ?php 
$index = 10;
echo "index==$index< br >";
echo 'index==$index< br >';
? >

Одинарные кавычки также отключают действие Esc-кодов (см. ниже). Одинарные кавычки увеличивают производительность кода, поэтому их использование предпочтительнее.

Другой способ определения строк – это использование heredoc-синтаксиса. В этом случае строка должна начинаться с символа <<< , после которого идет идентификатор. Заканчивается строка этим же идентификатором. Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания и начинаться не с цифры или знака подчеркивания.

Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что вам нет необходимости экранировать кавычки в heredoc, но вы по-прежнему можете использовать перечисленные выше управляющие последовательности. Переменные внутри heredoc тоже обрабатываются.

< ?php
$str = <<<EOD
Пример строки, охватывающей несколько
строчек, с использованием
heredoc-синтаксиса
EOD;
// Здесь идентификатор – EOD. Ниже
// идентификатор EOT
$name = 'Вася';
echo <<<EOT
Меня зовут "$name". 
EOT;
// это выведет "Меня зовут "Вася"."
? >

2. Простейший пример использования переменной

< ?php 
$text='Fuck you world!!!';
echo ($text);
? >

Здесь показано использование переменной. Имена переменных (как и функций) чувствительны к регистру. Переменные начинаются с символа $ (первый символ), второй символ должен обязательно буква. Переменные видны во всем файле, даже если она объявлена и присвоена в одной секции < ?php, а используется в другой секции < ?php. Переменные бывают трех типов - числовой, строковый и логический. Тип определяется неявно в момент присвоения переменной значения. Переменная появляется в момент её назначения. Для проверки факта существования переменной имеется функция IsSet, например (выполните этот код 2 раза, во второй раз раскомментируйте присвоение переменной $index):

< ?php 
//$index = 10;
if (IsSet($index))
   echo 'переменная $index установлена';
else
   echo 'переменная $index НЕ установлена';
? >

Если переменная не была задана (присвоена), но её значение используется, то переменная автоматически получает значение по умолчанию. Например, если функция, применяемая над переменной, математическая, то переменной присвоится число 0. Переменные, объявленные вне функций, являются глобальными, т. е. видны во всем файле. Переменные, объявленные в теле функции, видны только в этой функции. Операторы PHP, в отличие от функций, констант и переменных, нечувствительны к регистру.

3. Неявное преобразование типа переменной (в данном примере преобразование строки в число):

$str = '10';
$index = 2 * $str;
echo $index, "< br >";

Будет выведен результат 20. Это означает, что интерпретатор преобразовал строку '10' в число. При выводе произошло также преобразование - число 20 было преобразовано в строку '20'. Автоматические преобразования типов упрощают код, но затрудняют поиск логических ошибок при отладке.

4. Определение констант, использование комментариев.

< ?php
define("MY_CONST","Hello, Russia!");
echo MY_CONST; # выведет на экран: Hello, Russia!
? >

В этом примере задана константа и показано использование комментариев. Имя константы тоже чувствительно к регистру. Существующие предопределенные логические константы TRUE и FALSE нечувствительны к регистру. Константы удобно использовать в отдельном файле и подключать его оператором require_once, например, в таком файле могут храниться строковые константы пунктов меню. При случае легко поменять язык сайта, просто включив другой файл с константами.

5. Другие способы задания комментариев:

// Это однострочный комментарий в стиле языка С
/*
А вот и
многострочный комментарий
в стиле C!
*/

6. Использование перевода строки и параграфа при выводе

< ?php
echo "Hello world!
"
; echo "My name is Vasya!"; ? >

Тут показано использование перевода строки < br > при выводе. Если использовать < P >, то это будет означать конец параграфа, и интервал до новой строки будет увеличен по сравнению с < br >.

7. Использование Ecs-кодов

\r
\n - команда, полностью эквивалентная тегу
в HTML - перенос строки (\n почему-то не всегда работает).
\$ - выведет символ доллара.
\\ - выведет обратную косую черту.
\" - выведет кавычки.

8. Пример функции

< ?php
#определение функции
function HW()
{
echo "Hello world!";
}
# вызываем функцию
HW();
? >

Имена функций чувствительны к регистру. Возврат значения переменной из функции возможно с помощью ключевого слова return $имя_переменной. Вместо тега < ?php можно использовать тег < ?, но лучше этого не делать.

По умолчанию параметры в функцию передаются по значению, то есть переданную в функцию переменную можно свободно изменять внутри функции, и на выходе значение переменной, которая передавалась, останется прежним. Чтобы передать переменную не по значению, а по ссылке, в вызове функции к переменной нужно добавить амперсанд &, например:

< ?php
function add_some_extra(&$string)
{
    $string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str;    // Выведет 'This is a string, and something extra.'
? >

9. Пример условного оператора, получение переменной окружения.

< ?php
if ( getenv ( REMOTE_ADDR ) == '192.168.0.14') 
   echo "Нифига не покажу! Сперва пиво, потом инфа!";
else
   include ('postinfo.html');
? >

Здесь показан пример условного оператора - проверка на адрес клиента, который зашел на сайт. Если его адрес не равен 192.168.0.14, то будет выведен файл 'postinfo.html' (тут еще и продемонстрировано действие оператора include). Бывают следующие операторы сравнения:

оператор описание
== равно
=== равно и совпадают типы
!= не равно
< > меньше больше
< = меньше либо равно
> = больше либо равно

Кроме того, есть очень удобный оператор elseif:

$day = 2;
...
if ($day == 1)
   printf("Понедельник");
elseif ($day == 2)
   printf("Вторник");
...
elseif ($day == 7)
   printf("Воскресенье");

Тут также продемонстрировано действие оператора include. Бывают еще функции включения include_once, require, require_once. Функции включения с окончанием _once гарантируют, что включение файла будет произведено только один раз, что спасает от логических ошибок в программе - если будет произведена попытка повторного включения, то сгенерируется фатальная ошибка. Функции include и include_once отличаются от require и require_once тем, что первая пара генерирует только предупреждение об ошибке о продолжает выполнение сценария. Вторая пара генерирует фатальную ошибку (дальнейшее выполнение сценария прекращается). Таким образом, include лучше использовать для включения файлов с содержимым (документов), а require для файлов программы PHP.

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

10. Получение других переменных окружения

< ?php
echo ("REDIRECT_UNIQUE_ID==");echo (getenv (REDIRECT_UNIQUE_ID));echo ("< br >");
echo ("QUERY_STRING==");echo (getenv (QUERY_STRING));echo ("< br >");
echo ("DBENTRY==");echo (getenv (DBENTRY));echo ("< br >");
echo ("REDIRECT_SCRIPT_URI==");echo (getenv (REDIRECT_SCRIPT_URI));echo ("< br >");
echo ("HTTP_ACCEPT_LANGUAGE==");echo (getenv (HTTP_ACCEPT_LANGUAGE));echo ("< br >");
echo ("HTTP_REFERER==");echo (getenv (HTTP_REFERER));echo ("< br >");
echo ("REDIRECT_SCRIPT_URL==");echo (getenv (REDIRECT_SCRIPT_URL));echo ("< br >");
echo ("REMOTE_PORT==");echo (getenv (REMOTE_PORT));echo ("< br >");
echo ("HTTP_ACCEPT==");echo (getenv (HTTP_ACCEPT));echo ("< br >");
echo ("HTTP_USER_AGENT==");echo (getenv (HTTP_USER_AGENT));echo ("< br >");
echo ("GATEWAY_INTERFACE==");echo (getenv (GATEWAY_INTERFACE));echo ("< br >");
echo ("HTTP_HOST==");echo (getenv (HTTP_HOST));echo ("< br >");
echo ("SCRIPT_URI==");echo (getenv (SCRIPT_URI));echo ("< br >");
echo ("SCRIPT_NAME==");echo (getenv (SCRIPT_NAME));echo ("< br >");
echo ("SCRIPT_URL==");echo (getenv (SCRIPT_URL));echo ("< br >");
echo ("SERVER_NAME==");echo (getenv (SERVER_NAME));echo ("< br >");
echo ("REDIRECT_STATUS==");echo (getenv (REDIRECT_STATUS));echo ("< br >");
echo ("UNIQUE_ID==");echo (getenv (UNIQUE_ID));echo ("< br >");
echo ("HTTP_VIA==");echo (getenv (HTTP_VIA));echo ("< br >");
echo ("SCRIPT_FILENAME==");echo (getenv (SCRIPT_FILENAME));echo ("< br >");
echo ("PATH==");echo (getenv (PATH));echo ("< br >");
echo ("STATUS==");echo (getenv (STATUS));echo ("< br >");
echo ("SERVER_ADDR==");echo (getenv (SERVER_ADDR));echo ("< br >");
echo ("SERVER_PROTOCOL==");echo (getenv (SERVER_PROTOCOL));echo ("< br >");
echo ("HTTP_CONNECTION==");echo (getenv (HTTP_CONNECTION));echo ("< br >");
echo ("REDIRECT_DBENTRY==");echo (getenv (REDIRECT_DBENTRY));echo ("< br >");
echo ("SERVER_SIGNATURE==");echo (getenv (SERVER_SIGNATURE));echo ("< br >");
echo ("PATH_TRANSLATED==");echo (getenv (PATH_TRANSLATED));echo ("< br >");
echo ("PATH_INFO==");echo (getenv (PATH_INFO));echo ("< br >");
echo ("SERVER_ADMIN==");echo (getenv (SERVER_ADMIN));echo ("< br >");
echo ("SERVER_SOFTWARE==");echo (getenv (SERVER_SOFTWARE));echo ("< br >");
echo ("REMOTE_ADDR==");echo (getenv (REMOTE_ADDR));echo ("< br >");
echo ("DOCUMENT_ROOT==");echo (getenv (DOCUMENT_ROOT));echo ("< br >");
echo ("REQUEST_URI==");echo (getenv (REQUEST_URI));echo ("< br >");
echo ("REDIRECT_URL==");echo (getenv (REDIRECT_URL));echo ("< br >");
echo ("REQUEST_METHOD==");echo (getenv (REQUEST_METHOD));echo ("< br >");
echo ("SERVER_PORT==");echo (getenv (SERVER_PORT));echo ("< br >");
echo ("HTTP_REFERER==");echo (getenv (HTTP_REFERER));echo ("< br >");
? >

Здесь показан вывод переменных окружения сервера. В одной строке можно использовать несколько операторов, отделенных табуляцией, пробелами и точкой с запятой. Более правильно, конечно, было бы использовать цикл foreach, поскольку перечень переменных для каждого сервера может отличаться (см. пункт 18 Массивы).

11. Логгер пользователей, которые заходят на сайт

< ?php
#путь к файлу с будущими логами
$log_path = './logs/' . date("ymd") . '.txt';
#берем из переменной окружения ip-адрес посетителя...
$user_ip = getenv(REMOTE_ADDR );
#... и его тип браузера
$user_brouser = getenv(HTTP_USER_AGENT);
#узнаем сегодняшнее число и время
$curent_time = date("ymd H:i:s");
#Компонуем все данные в одну строку (для удобства)
$log_string = "$user_ip $user_brouser $curent_time\r\n";
#открываем файл для добавления в него (все добавляется в конец старого файла)
$file = fopen($log_path,"a");
#пишем в файл приготовленную строку
fwrite($file, $log_string, strlen($log_string));
#закрываем файл
fclose($file);
? >

Файл лога будет называться YYMMDD.txt и писаться в папку logs, которая находится в корневом каталоге сайта (там же, где файл index.html).

Что нового:

- строки складываются друг с другом не оператором '+', а оператором '.' (кто бы мог подумать).
- функция date позволяет получать текущее время в отформатированном виде.
- переменные можно складывать еще и просто перечисляя их в одной строке (!..)
- \r\n используем для добавления перевода строки.
- $file = fopen(путь_до_файла,"a") используем для открытия файла и получения его дескриптора ($file). "a" означает, что файл будет использоваться для добавления данных.
- fwrite пишем в файл, fclose его закрываем.

Возможны другие варианты открытия файла:

'r' - Открыть только для чтения, помещает указатель на начало файла.
'r+' - Открыть для чтения и для записи, помещает указатель на начало файла.
'w' - Открыть только для записи, помещает указатель на начало файла и очищает все содержимое файла. Если файл не существует, создается новый файл
'w+' - Открыть для чтения и для записи, помещает указатель на начало файла и очищает все содержимое файла. Если файл не существует, создается новый файл.
'a' - Открыть только для записи, помещает указатель на конец файла. Если файл не существует, создается новый файл.
'a+' - Открыть для чтения и для записи, помещает указатель на конец файла. Если файл не существует, создается новый файл.

Может также использоваться символ 'b' в системах, различающих бинарные и текстовые файлы (не используется в Unix). Если данное значение не имеет смысла, оно игнорируется.

12. Как запустить PHP-скрипт? Опишу один из способов.

- в тело html-странички (например, page.html), в любом месте раздела < BODY >< /BODY > нужно встроить код PHP:

< html >
< head >
    < title >< /title >
< /head >
< body >
 < ?php
 #тут вставляем код PHP
 ...
 ? >
< /body >
< /html >

- файл странички переименовываем из page.html в page.php. В NetObjects Fusion 7.5, в частности, это делается через свойства страницы (Go\Structure View, щелкаем на желто-черную иконку странички, в окошке Properties выбираем закладку Page, жмем кнопку Custom Names..., в выпадающем списке File extension: меняем расширение файла на .php, просто вбивая вручную, жмем Ok).
- убеждаемся, что права на файл page.php равны 755 (права можно просмотреть и изменить либо в командной строке unix, либо в ftp-клиенте с соответствующими возможностями. Я использовал с успехом ftp-клиент, встроенный в Total Commander).
- теперь в браузере нужно загружать не page.html, а page.php. При этом html-код выполнится без изменений и отобразится в браузере, но дополнительно веб-сервер выполнит и PHP-код, заключенный между тегами < ?php и ? >. Отобразится как HTML-код, так и то, что будет выведено командой echo в коде PHP. Этот код может многое - модифицировать выводимую страницу, обращаться к базам данных, писать и читать файлы на web-сервере и многое другое. Если просмотреть исходный код страницы page.php в браузере (правая кнопка - View Source), то код PHP виден не будет (т. е. сервер отдает пользователю уже откомпилированную страничку).

13. Как узнать версию PHP, которая установлена на сайте? Функция phpinfo() выводит красивую и подробную информацию об установленном PHP.

< ?php
phpinfo();
? >

14. Функция Error_Reporting() меняет параметры вывода сообщений об ошибке.

< ?php
Error_Reporting(E_ALL);             //вкл. вывод всех сообщ. об ошибках и предупр.
Error_Reporting(E_ALL & ~E_NOTICE); //отключает предупреждающие сообщения
Error_Reporting(E_ALL - E_NOTICE);  //то же самое
Error_Reporting(E_ALL - (E_NOTICE+E_WARNING));   //то же самое
? >

Если перед функцией поставить символ @, например @print(), то в случае ошибки в этой функции сообщение об ошибке не выведется.

15. Блок кода задается так же, как в C, с помощью {}.

16. Цикл for задается так же, как в C:

for ($i = 1; $i < = 3; $i = $i+1) {}
for ($i = 1; $i < = 3; $i++) {}
for (;;) {}                                       //бесконечный цикл

Отличие в том, что инициализировать можно несколько переменных:

for ($sum=0, $i=1; $i < = 3; $i++) {}

Кроме того, можно делать несколько проверок, но это не имеет смысла, поскольку срабатывает только последняя:

for ($i=1; $i < = 3, $sum < 1000; $i++) {}

Например, так получим бесконечный цикл:

for ($i=1, $sum=-1; false, false, true; $i = $i + 3, $sum = $sum+3) 
{
   print "$i ";
   print "$sum< br >";
}

А так цикл ни разу не выполнится:

for ($i=1, $sum=-1; false, true, false; $i = $i + 3, $sum = $sum+3) 
{
   print "$i ";
   print "$sum< br >";
}

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

17. exit() прекращает работу сценария - дальнейший HTML-код не загрузится и не отобразится. Оператор die("сообщение") делает то же самое, но выводит сообщение.

18. Функция для поиска и замены с помощью регулярного выражения

mixed preg_replace (mixed pattern,
                    mixed replacement,
                    mixed subject
                    [, int limit])

pattern           регулярное выражение для поиска, чего будем менять
replacement       чем заменяем
subject           строка, в которой производится поиск и замена
limit             сколько раз производим замену (необязательный параметр)
mixed             псевдотип; говорит о том, что параметр может принимать множество (но не обязательно все) типов.

19. Массивы

Присвоение элементам значений:

$parts[] = "K155ЛА3";
$parts[] = "K155ЛА8";
$parts[] = "K155ЛН1";
echo $parts[0];           //выведется K155ЛА3

Или так:

$parts[0] = "K155ЛА3";
$parts[1] = "K155ЛА8";
$parts[2] = "K155ЛН1";
echo $parts[0];           //выведется K155ЛА3

Можно и так:

$parts[2]  = "K155ЛА3";
$parts[7]  = "K155ЛА8";
$parts[20] = "K155ЛН1";
$parts[]   = "KРЕН5В";

В этом случае последний элемент массива получит индекс 21.
Можно в качестве индексов использовать символы:

$parts["ca"] = "K155ЛА3";
$parts["d"]  = "K155ЛА8";
$parts["nr"] = "K155ЛН1";
echo $parts["ca"];        //выведется K155ЛА3

Можно создавать массивы с помощью функции array:

$parts = array("K155ЛА3", "K155ЛА8", "K155ЛН1");
echo $parts[0];           //выведется K155ЛА3

С помощью функции array можно создавать массивы с символьными индексами:

$parts = array("ca" => "K155ЛА3", "d" => "K155ЛА8", "nr" => "K155ЛН1");
echo $parts["nr"];        //выведется K155ЛН1

Цикл foreach позволяет вывести все элементы массива:

$parts[2] = "K155ЛА3";
$parts[7] = "K155ЛА8";
$parts[20] = "K155ЛН1";
foreach ($parts as $val)
{   
   echo $val;
   echo "< br >";
}

А так с помощью foreach можно получать значение индекса:

$parts["ca"] = "K155ЛА3";
$parts["d"] = "K155ЛА8";
$parts["nr"] = "K155ЛН1";
foreach ($parts as $idx => $val)
{   
   echo $idx;
   echo " ";
   echo $val;
   echo "< br >";
}

Функция count позволяет получить количество элементов массива:

$parts[2] = "K155ЛА3";
$parts[7] = "K155ЛА8";
$parts[20] = "K155ЛН1";
$parts[] = "KРЕН5В";
foreach ($parts as $val)
{   
   echo $val;
   echo "< br >";
}
echo "Total ".count($parts)." parts";

Пример, который выводит все переменные окружения сервера:

foreach ($_SERVER as $key => $val)
{   
   echo $key."& nbsp ; & nbsp ; & nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ";
   echo $val;
   echo "< br >";
}

Этот код не такой громоздкий, как был приведен ранее (п. 10), и выводит весь список существующих переменных. Коды & nbsp ; выводят пробелы, которые не обрезаются до одного.

Другие предопределенные массивы:

$GLOBALS Все глобальные переменные скрипта (включает все остальные).
$_SERVER Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива $HTTP_SERVER_VARS (который по-прежнему доступен, но не рекомендуется).
$_GET Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива $HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).
$_POST Переменные, передаваемые скрипту через HTTP POST. Аналог старого массива $HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).
$_COOKIE Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива $HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).
$_FILES Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива $HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется). Для дополнительной информации смотрите "Загрузка методом POST".
$_ENV Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).
$_REQUEST Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0. Смотрите также import_request_variables().
$_SESSION Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива $HTTP_SESSION_VARS (который по-прежнему доступен, но не рекомендуется). Дополнительную информацию смотрите в разделе Функции обработки сессии.

20. Строки

< ?php
// Получение первого символа строки
$str = 'Это тест.';
$first = $str{0};
// Получение третьего символа строки
$third = $str{2};
// Получение последнего символа строки
$str = 'Это все еще тест.';
$last = $str{strlen($str)-1};
// Изменение последнего символа строки
$str = 'Посмотри на море';
$str{strlen($str)-1} = 'я';
? >

Функции для работы со строками и символами:

mixed str_replace (mixed search, mixed replace, mixed subject[, int &count]) возвращает строку, в subject, в которой все search заменены на replace. В переменной count подсчитывается количество замен.

int ord (string string) возвращает ASCII-код первого символа в строке.

string chr (int ascii) возвращает строку из одного символа, код которого задан аргументом ascii.

21. Удобные функции для работы с массивами

array split (string pattern, string string [, int limit]) позволяет получить массив из строки string, помещая её по частям, границы которых выделяются разделителем pattern. При этом pattern может состоять как из одного символа, так и из нескольких, а также из регулярного выражения (подробнее см. help). В результирующие элементы получаемого массива pattern не попадает. Функцию удобно использовать для разделения текста на отдельные строки, для разбиения html-кода на блоки с помощью тегов, для обработки CSV-таблиц и т. д. Если указан необязательный элемент limit, то массив будет состоять из не более чем limit элементов. В случае ошибки функция возвращает FALSE. Пример (открывается простой текстовый файл, каждая строка которого состоит из ссылки, и этими ссылками по разделителю \r\n заполняется массив $good_links):

$file_good_links_content = file_get_contents ('../good_links.txt');
$good_links = split (chr(0x0D).chr(0x0A), $file_good_links_content);

bool in_array (mixed needle, array haystack [, bool strict]) ищет в массиве haystack значение needle и возвращает TRUE в случае удачи, FALSE в противном случае. Чрезвычайно удобная функция, одной строкой заменяющая цикл поиска по элементам массива. Если третий параметр strict установлен в TRUE, тогда функция in_array() также проверит соответствие types параметра needle и соответствующего значения массива haystack. Если needle - строка, сравнение будет регистрозависимым. Пример:

function DeleteBadLinks (&$html)
// Функция вырезает из текста $html “битые” ссылки - те, которых
// нет в файле good_links.txt.
// $good_links - массив хороших ссылок
// $html_block - массив блоков текста $html, каждый блок начинается на ссылку
// string get_link (string) - функция выделяет из блока значение ссылки
{
   $file_good_links_content = file_get_contents ('../good_links.txt');
   $good_links = split (chr(0x0D).chr(0x0A), $file_good_links_content);
   $html_block = split (HREF_START, $html);
   $html = '';
   foreach ($html_block as $block)
   // для каждого блока проверяем наличие ссылки в массиве $good_links
   {
      $block = HREF_START.$block;
      $test_link = get_link($block);  //$test_link содержит ссылку из блока
      if ($test_link == '')
         continue;
      else
      {
         // проверим ссылку, если она верная, блок сохраняем в $html
         if (in_array($test_link, $good_links))
            $html .= $block;
      }
   }
}
 

Комментарии  

 
+7 #5 Svyatoslav 19.04.2014 13:43
Наткнулся бы я на такое представление ('избитой') темы пораньше, сэкономил бы наверное пару месяцев самообучения. Действительно полезно и на удивление (для php) понятно. "Поиском пользоваться" умею и давно - такие подборки редкость. Для начинающих, особенно самоучек самое-то. Те для кого это 'избитая тема' уже на уровне, когда реально самое полезное это справочник PHP, уже и поиск не нужен особо; и в алфавите не 32 буквы, а 70-80; и математика из знаков препинания не пугает. Спасибо автору, и всем, кто хоть близко так умеет и делает.
Цитировать
 
 
+4 #4 Елена 19.02.2014 10:46
Спасибо автору, очень доходчиво все показано, и пояснения хорошие. При внесении небольших поправок (убрать лишние пробелы и т. п.) все работает!

microsin: благодарю, Елена. Насчет лишних пробелов Вы абсолютно правы, но без них никак, увы. Они требуются внутри угловых скобок, иначе визуальный редактор "исправляет" текст, и безвозвратно его портит. Как справиться с этим так и не разобрался, пришлось вставлять пробелы.
Цитировать
 
 
+1 #3 Евгений 13.02.2013 17:45
Порадовало Hello, Russia. =)
Остальное - это давно избитая тема, не понимаю зачем выкладывать на сайт то, чего и так полно в сети. Все эти скрипты для детей от 6 до 9 лет. Из-за таких сайтов тяжело найти что-то толковое в сети.

microsin: на всех не угодишь, извините. Не жалуйтесь на то, на что не можете повлиять - просто учитесь правильно пользоваться поисковыми системами. И пожалуйста, не меряйте всех одной меркой, далеко не все гуру в PHP. Тот факт, что поисковик привел Вас на эту страничку, говорит как раз об обратном - несмотря на то, что "это избитая тема", кое кому она еще интересна.
Цитировать
 
 
+4 #2 Дмитрий 31.03.2011 19:46
Молодец! Хорошая статья получилась, только рядом с цифрами лучше проставить названия примеров, проще будет ориентироваться .

microsin: Вы правы, поправил как смог.
Цитировать
 
 
+3 #1 vova 16.02.2010 01:26
Спасибо, обязательно попробую скрипты.
Хотелось бы еще какие-то интересные. Типа запуск скрипта по нажатию кнопки, передача значения поля - например, пишешь цифру, а она передается другому скрипту. и т.д.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page