Как найти php пример

Create a file named hello.php and put it
in your web server’s root directory (DOCUMENT_ROOT)
with the following content:

Example #1 Our first PHP script: hello.php


<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>

Use your browser to access the file with your web server’s URL, ending
with the /hello.php file reference. When developing locally this
URL will be something like http://localhost/hello.php
or http://127.0.0.1/hello.php but this depends on the
web server’s configuration. If everything is configured correctly, this
file will be parsed by PHP and the following output will be sent to
your browser:

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <p>Hello World</p>
 </body>
</html>

This program is extremely simple and you really did not need to use
PHP to create a page like this. All it does is display:
Hello World using the PHP echo
statement. Note that the file does not need to be executable
or special in any way. The server finds out that this file needs to be interpreted
by PHP because you used the “.php” extension, which the server is configured
to pass on to PHP. Think of this as a normal HTML file which happens to have
a set of special tags available to you that do a lot of interesting things.

If you tried this example and it did not output anything, it prompted
for download, or you see the whole file as text, chances are that the
server you are on does not have PHP enabled, or is not configured properly.
Ask your administrator to enable it for you using the
Installation chapter
of the manual. If you are developing locally, also read the
installation chapter to make sure everything is configured
properly. Make sure that you access the file via http with the server
providing you the output. If you just call up the file from your file
system, then it will not be parsed by PHP. If the problems persist anyway,
do not hesitate to use one of the many
» PHP support options.

The point of the example is to show the special PHP tag format.
In this example we used <?php to indicate the
start of a PHP tag. Then we put the PHP statement and left PHP mode by
adding the closing tag, ?>. You may jump in
and out of PHP mode in an HTML file like this anywhere you want. For more
details, read the manual section on the
basic PHP syntax.

Note:
A Note on Line Feeds

Line feeds have little meaning in HTML, however it is still a good idea
to make your HTML look nice and clean by putting line feeds in. A
linefeed that follows immediately after a closing
?> will be removed by PHP. This can be extremely
useful when you are putting in many blocks of PHP or include files
containing PHP that aren’t supposed to output anything. At the same time
it can be a bit confusing. You can put a space after the closing
?> to force a space and a line feed to be output,
or you can put an explicit line feed in the last echo/print from within
your PHP block.

Note:
A Note on Text Editors

There are many text editors and Integrated Development Environments (IDEs)
that you can use to create, edit and manage PHP files. A partial list of
these tools is maintained at » PHP Editors
List. If you wish to recommend an editor, please visit the above
page and ask the page maintainer to add the editor to the list. Having
an editor with syntax highlighting can be helpful.

Note:
A Note on Word Processors

Word processors such as StarOffice Writer, Microsoft Word and Abiword are
not optimal for editing PHP files. If you wish to use one for this
test script, you must ensure that you save the file as plain
text
or PHP will not be able to read and execute the script.

Now that you have successfully created a working PHP script, it is
time to create the most famous PHP script! Make a call to the
phpinfo() function and you will see a lot of useful
information about your system and setup such as available
predefined variables,
loaded PHP modules, and configuration
settings. Take some time and review this important information.

Example #2 Get system information from PHP

Как найти php backdoor  на сайте? После поиска зловреда на сайте заказчика решил систематизировать свои знания по этому вопросу.

Самый короткий пример позволяющий исполнить произвольный php код удаленно:

eval($_REQUEST[‘phpshell’]);

1. Поискать на сайте “опасные” функции:
а) eval() — исполняем php код
б) passthru(), exec()  и им подобные — испололняем команду ОС
в) fopen(), chmod(), touch(), … — функции для работы с файловой системой
 

Для того чтобы искать, понадобится шелл доступ и некоторые знания *nix комманд. Пример, как найти в текущей директории рекурсивно все *.php файлы содержащие функцию eval()

find ./ name “*.php” print | xargs grep “eval(“

Пример, как найти последние измененные файлы за неделю:

find ./ mtime  7 name “*.php” prune  print

find — великолепная утилита для поиска в никсах, но синтаксис сложно запомнить, для ленивых есть отличный онлайн find помощник .

2. Проверить .htaccess файлы на наличие чего нибудь подозрительного. Например можно засунуть php код в *.html так

RewriteEngine on

RewriteRule ^(.*).html $1.php

Или даже в css и jpg, чтоб никто не догадался!

AddHandler application/xhttpdphp .php .css .jpg

3. Анализируем логи. Если известно примерное время, после которого замечен бэкдор, то можно поискать подозрительное в логах. Хотя на сайте с высокой посещаемостью это будет нелегко.
Пример:

“GET /path/footer.inc.php?act=edit&file=<span style=”backgroundcolor:#ffff00;”>/home/account/public_html/.htaccess</span> HTTP/1.1″

200 4795 “http://website/path/footer.inc.php?act=filemanager” “Mozilla/5.0…”

Многие наивно думают, что не используя самописные скрипты — застрахованы от зловредов. Это не так. Шелл-код нередко встречается и в CMS и форумах. Обычно этим грешат нулленые версии. А иногда и в плагинах.

Ну и наконец полезные ссылки по теме:
Бэкдоры: PhpRemoteView , r57shell
NeoPI скрипт на Питоне для поиска “опасного” кода
Статья на securitylab.ru
 

Реализация поиска на сайте через PHP

У меня уже несколько раз просили написать статью о том, как реализовать поиск на сайте через PHP. Задача это непростая, я бы даже сказал – очень непростая, поскольку здесь имеется огромное количество нюансов и препятствий. В этой статье я разберу алгоритм поиска на сайте.

Давайте предположим, что на нашем сайте имеется множество различных материалов (статей, новостей, заметок и прочего). Всё это добро находится в базе данных. И наша задача – реализовать поиск на сайте. Простейший алгоритм следующий:

  1. Создать HTML-форму со строкой поиска, а также кнопкой “Submit“. В текстовое поле пользователи будут вводить поисковый запрос, а далее нажимать на кнопку.
  2. Получить поисковый запрос (как правило, передаваемый методом GET, но иногда применяют и POST), а также, в целях защиты от XSS, пропустить его через функцию htmlspecialchars().
  3. Сделать выборку из соответствующих таблицы (со статьями, новостями, заметками и прочим) тех записей, в которых содержится поисковый запрос. Показываю примерный SQL-запрос для таких случаев:
    SELECT * FROM articles WHERE `text_article` LIKE %search%Соответственно, вместо search подставляется строка поиска.
  4. Получив записи, в нужном виде выводим их, желательно, по релевантности. Я, например, сделал у себя на сайте так: где больше всего совпадений – та статья и релевантнее, следовательно, ставлю её первой. Скорее всего, Вам этот способ оценки релевантности тоже подойдёт.

Многие из Вас скажут, что ничего сложного здесь нет. И будут отчасти правы, однако, давайте разберём такой пример строки поиска: “ищу этот текст“. Встаёт вопрос: “А что, собственно, ищется?“. То ли ищется точное вхождение текста “ищу этот текст“. Или, быть может, ищется текст, где присутствуют все три слова, но которые могут следовать далеко не друг за другом. Или, возможно, ищется текст, где присутствует хотя бы одно из этих слов.

И вот здесь задача значительно усложняется. Можно сделать сложную систему синтаксиса (как в поисковых системах), например, ищется точное вхождение, если запрос задан в кавычках. А можно давать выбор пользователям, как именно они хотят проводить поиск (с помощью radio-кнопок). Таким образом, сделано у меня на сайте. Поэтому в предыдущий алгоритм добавляется ещё один пункт: составление SQL-запрос. Вот пример SQL-запроса, когда нужно вытащить все материалы, в которых имеется хотя бы одно слово из запроса “ищу этот текст“:

SELECT * FROM articles WHERE (`text_article` LIKE "%ищу%" OR `text_article` LIKE "%этот%" OR `text_article` LIKE "%текст%")

Соответственно, в скрипте поиска Вы должны генерировать подобные SQL-запросы, посылать к базе данных, получать ответ и выводить его. Это всё ещё больше усложняется, если Вы выводите записи по релевантности, так как трудно сразу сказать, что должно быть релевантнее: 3 точных вхождения запроса, либо 10 вхождений частей запроса. У меня на сайте предпочтение всегда отдаётся точным вхожденияи, но этот момент уже достаточно спорен. Безусловно, это сложно, и если это Вы делаете в первый раз, то несколько часов Вы точно потратите. Надеюсь, что мой алгоритм реализации поиска на сайте через PHP Вам поможет.

  • Создано 23.05.2011 23:37:00


  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Указанная секция 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_timern";
#открываем файл для добавления в него (все добавляется в конец старого файла)
$file = fopen($log_path,"a");
#пишем в файл приготовленную строку
fwrite($file, $log_string, strlen($log_string));
#закрываем файл
fclose($file);
? >

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

Что нового:

– строки складываются друг с другом не оператором ‘+’, а оператором ‘.’ (кто бы мог подумать).
– функция date позволяет получать текущее время в отформатированном виде.
– переменные можно складывать еще и просто перечисляя их в одной строке (!..)
– rn используем для добавления перевода строки.
– $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, в частности, это делается через свойства страницы (GoStructure 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.

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. Пример (открывается простой текстовый файл, каждая строка которого состоит из ссылки, и этими ссылками по разделителю rn заполняется массив $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;
      }
   }
}

Как заменить элемент в строке, еще сложнее найти и заменить элемент в строке, это может быть слово, часть слова… код Какие функции существую для замены в строке!?

Я не буду обозревать все функции которые существуют! Расскажу о той, которой сам пользуюсь! Эта функция str_replace.

  • Как заменить один элемент строки!?

    У нас есть некая строка, в которой требуется найти какой-то элемент и заменить его на другой!

    Здесь текст с нижним тире_, которое_ надо заменить на обыкновенное –

    Мы воспользуемся функцией str_replace

    Для этой функции и множества аналогичных нужно запомнить, что внутри неё…

    Я запомнил так: str_replace(“ЧТО”,”НА ЧТО”,”ГДЕ”);

    Нам потребуется переменная…

    $переменная = “Здесь текст с нижним тире_, которое_ надо заменить на обыкновенное -“;

    Замена str_replace будет иметь такой вид:

    $переменная = str_replace(“_”,”-“, $переменная);

    Результат:

    Как видим наше подчеркивание заменилось удачно!

    Здесь текст с нижним тире

    , которое

    надо заменить на обыкновенное –

  • Как заменить несколько элементов строки!?

    Чем еще замечательна функция str_replace – тем, что она умеет заменять не только один элемент строки, но и несколько!

    Почему я решил сегодня написать эту страницу… вчера у меня задача стояла заменить в строке несколько элементов например:

    Если вы нажмете по данной ссылке и посмотрите в адресную строку, то увидите вот такой адрес…

    Чтобы сто раз не повторять поместим её в переменную – она нам понадобится…

    $url = “https://dwweb.ru/?tema=php&show_spisok=PHP”;

    В этой строке нам нужно заменить три элемента … в общем не важно сколько будет у вас элементов и сколько их вообще нужно заменить в строке!

    Поэтому я и люблю эту функцию!

    У нас есть три элемента, которые мне требовалось заменить… ” ? & = ”

    Создадим массив с элементами, которые нужно заменить в строке:

    $array_replace = array(“&”, “?”, “=”);

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

    $rezult = str_replace($array_replace, “_”, $url) ;

    Результат замены в строке нескольких элементов на один php:

    https://dwweb.ru/_tema_php_show_spisok_PHP

  • Как заменить пробелы в Php

    Для того, чтобы заменить пробелы в php, нам опять потребуется:

    1). Тестовый текст в переменной…, в котором будут пробелы:

    $objekt = “Это тестовый текст с пробелами, которые мы будем заменять, на что-то, не важно на что!”;

    Берем нашу функцию для замены, в первом значении функции ставим пробел… во втором.. ставим , то на что будем заменять пробел,

    ну например <red>Ё</red>, и третьим будет наша переменная и выведем с помощью echo прямо здесь…:

    echo str_replace( ” ” , $replace_0 , $objekt )

    Результат поиска измены пробела на что-то:

    Это

    Ё

    тестовый

    Ё

    текст

    Ё

    с

    Ё

    пробелами,

    Ё

    которые

    Ё

    мы

    Ё

    будем

    Ё

    заменять,

    Ё

    на

    Ё

    что-то,

    Ё

    не

    Ё

    важно

    Ё

    на

    Ё

    что!

  • Как заменить слово/слова в Php

    Для того, чтобы заменить слово в тексте нам потребуется некий текст с некими словами, и желательно, чтобы это слово повторялось несколько раз! И если это слово будет найдено, то покрасим в какой-то цвет! А давайте вот этот текст, в котором и идет речь о замене слова, покрасим данное слово в красный цвет!bravo
    смайлы(если вы не поняли, то он кричит – “это гениально!!!”)

    И тут внимание! Выше было показано, как можно найти, какой-то элемент в строке и заменить его! Еще можно было заменить из массива!
    А что если мы заменим… массив на массив!? Интересно!? Тогда погнали!
    Для этого… нам понадобится… массив $search

    $search_1 = array(“слово”,”слова”);

    Далее нам потребуется массив, на который будем менять… слова будут те же. но вот мы обернем их в цвет…

    $replace_1 = array(“<span style=”color: red”>слово</span >”,”<span style=”color: #1b00ff;”>слова</span>”);

    Ну и собственно текст, где и будем менять массив на массив:

    $subject_1 = “Для того, чтобы заменить слово в тексте нам потребуется некий текст с некими словами, и желательно, чтобы это слово повторялось несколько раз! И если это слово будет найдено, то покрасим в какой-то цвет! А давайте вот этот текст, в котором и идет речь о замене слова, покрасим данное слово в красный цвет!, а все слова, которые будут иметь в совсем составе слово «слова» , будут покрашены в синий “;

    И выведем прямо здесь нашу замену слова:

    echo str_replace($search_1, $replace_1, $subject_1 );

    Результат замены слова

    Для того, чтобы заменить слово в тексте нам потребуется некий текст с некими словами, и желательно, чтобы это слово повторялось несколько раз! И если это слово будет найдено, то покрасим в какой-то цвет! А давайте вот этот текст, в котором и идет речь о замене слова, покрасим данное слово в красный цвет!, а все слова, которые будут иметь в совсем составе слово «слова» , будут покрашены в синий

  • Найти первое повторяющееся слово и выделить его

    Условие задачи:

    Требуется найти в тексте первое повторяющиеся слово и подчеркнуть его(выделить).

    Предположим, что вам нужно найти первое повторяющееся слово в тексте и его же нужно подчеркнуть!

    Создадим сразу несколько переменных с разным текстом:

    $text = ‘This is do a test – “do do do”‘;
    $text_1 = ‘Это тестовый текст в котором есть повторяющееся слово текст’;
    $text_2 = ‘Это слово и тестовый текст в котором есть повторяющееся слово и слово текст’;
    $text_3 = ‘Это слово и тестовый текст в котором есть повторяющееся слово и слово это текст ‘;

    Разбиваем текст по пробелу с помощью explode

    $ex = explode(‘ ‘, $thetext);

    Далее нам потребуется два цикла. Внутри второго чикла пишем условие, если слово в массиве будет повторяться, то создаем счетчик, по имени слова:

    $$ex[$i] ++;

    Далее следующее условие, если счетчик будет равен 2, то прерываем цикл :

    break;

    Соберем циклы:

    $ex = explode(‘ ‘, $thetext);
    for ($i = 0; $i < count($ex); $i++)
    {
       for ($j = 0; $j < count($ex); $j++)
       {
           if (

    ($ex[$i]) ==

    ( $ex[$j]) )
           {
               $$ex[$i] ++;
               if($$ex[$i] ==2) {$the_word =

    ( $ex[$j] ); break;}
           }
       }
       if($the_word){break;}
    }

    Создаем третий цикл, в котором, как только встретится слово найденное в предыдущих двух циклах, то сразу его выделим цветом слово в массиве с помощью тега mark

    for ($d = 0; $d < count($ex); $d++)
    {
      if(

    ( $ex[$d] ) == $the_word) { $ex[$d] = ‘<mark>’.$ex[$d].'</mark>’; break; }
    }

    Далее Измененный массив преобразуем в строку:

    implode(‘ ‘, $ex);

    Запакуем это все в функцию :

    Добавлено… в условии and $ex [$i][2] – (2 – 1 = 1) количество символов, отсекать одинарные буквы. Если требуется отсечь предлоги с двумя и менее буквами – $ex [$i][2]

    function find_first($thetext)
    {
    $ex = explode(‘ ‘, $thetext);
    for ($i = 0; $i < count($ex); $i++)
    {
       for ($j = 0; $j < count($ex); $j++)
       {
           if (

    ($ex[$i]) ==

    ( $ex[$j]) and $ex [$i][1] )
           {
               $$ex[$i] ++;
               if($$ex[$i] ==2) {$the_word =

    ( $ex[$j] ); break;}
           }
       }
       if($the_word){break;}
    }
    for ($d = 0; $d < count($ex); $d++)
    {
          if(

    ( $ex[$d] ) == $the_word) { $ex[$d] = ‘<mark>’.$ex[$d].'</mark>’; break; }
    }
    return implode(‘ ‘, $ex);
    }

    Выведем результаты, нахождения первого повторяющегося слова в тексте :

    echo find_first($text);
    echo ‘<br>’;
    echo find_first($text_1);
    echo ‘<br>’;
    echo find_first($text_2);
    echo ‘<br>’;
    echo find_first($text_3);

    Пример функции, которая найдет в тексте первое встречающиеся слово и выделит его :

    This is do a test – “do do do”

    Это тестовый текст в котором есть повторяющееся слово текст

    Это слово и тестовый текст в котором есть повторяющееся слово и слово текст

    Это слово и тестовый текст в котором есть повторяющееся слово и слово это текст

    P.S.
    26.11.2020

    Сохранил старый текст на картинке и дальше расскажу зачем… и сравните 4 строку на скрине и выше идущую строку №4:

    Пример функции, которая найдет в тексте первое встречающиеся слово и выделит его :
    Как решил задачку.

    Написал я данную функцию.

    И мне нужно было куда-то ехать.

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

    И такая функция вполне способна решить проблему “ПРОПИСНЫХ” букв в начале предложения!

    Поэтому следующий пункт, где я занимался какими-то извращениями просто не нужен! wall
    смайлы

  • Замена слов в скобках php

    Тут встретился поисковый запрос – Замена слов в скобках php – я не знаю, что конкретно вы имели ввиду задавая такой вопрос поисковику, но я тут вспомнил, замечательную фишку. которую уже использую с незапамятных времен.
    В чем фишка!?
    Как это работает… например, очень частое применение разных ссылок, привело меня к мысли, что надо создать скрипт, который будет обрабатывать, слово в скобках.

    Если напишу вот так : php в коде… либо css , то никаких квадратных скобок вы не увидите… смотри скрин ниже:

    Замена слов в скобках php

    После обработки php скриптом, это будут обычные ссылки, слова в скобках были заменены на :

    В первом случае с php:

    <a href=”https://dwweb.ru/?tema=php” target=”_blank”>php</a>

    Во втором случае с css:

    <a href=”https://dwweb.ru/?tema=css” target=”_blank”>css</a>

    Таких слов огромное количество и естественно, что запомнить их все невозможно, поэтому у меня есть кнопка, которая выводит все эти слова в других кнопках, и достаточно кнопку нажать – она вставляется с помощью скрипта js.

    Нажмите, чтобы открыть в новом окне.

    Замена слов в скобках php

    Вот здесь мелькает эта панель, откуда и вставляются все требуемые слова в скобках.
    Вставка по нажатию на кнопки была реализована в BBCODE
    Продолжение:

    Поскольку довольно редкий поисковый запрос… напишите – вам интересен этот скрипт?!

  • Онлайн нахождение первого и повторяющихся слов

    Далее мы используем форму для ввода данных, внутри уже расположен какой-то текст.

    Необходимо выбрать, что будем искать :

    Найти первое повторяющиеся слово в тексте… и

    Найти все повторяющиеся слова в тексте.

    Выбираем режим – нажимаем найти!

    Нужно выбрать один из пунктов!

  • Скрипт – найти все повторяющиеся слова в тексте и выделить их.

    15.04.2021

    Через некоторое время пришлось вернуться к этой теме, поскольку поиск всех повторяющихся слов работал несколько некорректно!

    Это уже реализовано и внедрено выше пунктом – поиск всех повторяющихся слов.

    Не буду рассказывать всю функцию.

    А лишь основное:

    Алгоритм нахождения всех двойных слов и подсветка…

    Возьмем из скрипта – нахождение первого повторяющегося слова – первый цикл, удалим break;

    И добавим – выделено красным(1,3) – создание массива с повторяющимися словами.

    Отсекаем предлоги в два и менее знака(and $ex [$i][2]).

    $array = array();

    for ($i = 0; $i < count($ex ); $i++)

    {

      for ($j = 0; $j < count($ex ); $j++)

      {

        if ( trim(($ex [$i])) == trim(($ex [$j])) and $ex [$i][2])

        {

          $$ex [$i] ++;

          if($$ex [$i] ==2) {$array[] = trim($ex [$i]);}

        }

      }

    }

    Далее нам придется решить, как искать и сравнивать повторяющиеся такие слова, как возьмем слово “лампа” :

    Лампа и лампа

    лампа и лампа.

    лампа и лампа(и любой знак препинания и др.знаки)

    лампа и лампа(и любой тег html, например перенос <br>)

    В общем можно много и дого рассказывать -см выше – “найти все повторяющиеся слова”.

    Скачать скрипт писка и выделения повторяющихся слов в тексте:

    Скачать скрипт.

  • Поисковые запросы.

    О поисковых запросах

    Php найти слово в скобках

    Поисковый запрос – “php найти слово в скобках“, к сожалению, этого недостаточно, найти и… что сделать!?

    php найти слово в скобках – подчеркнуть!? На странице рассмотрели нахождение повторяющегося слова

    php найти слово в скобках – удалить!?

    php найти слово в скобках – заменить!? Также была тема замены слова в скобках(скобки без разницы какие, нужно в скрипте это прописать)

    php найти слово в скобках – получить текст внутри скобок??? Для данного вопроса, необходимы уточнения… первое ли вхождение в строке, либо все вхождения в строке.

  • Заменить N-ый символ в строке php

    Поисковый запрос “заменить 5 символ в строке php“, “заменить 2 символ в строке php” – в общем объединим, данные поисковые запросы в один: “Заменить N-ый символ в строке php
    Как это сделать!?
    Если речь идет о “кириллице в utf-8”, то придется поднапрячься.

    А если для латиницы, то вообще легко.

    Раз уж пошла речь о замене 5, то и возьмем это число и фразу:

    Hello world!

    Обратимся к пятому элементу строки, как к ячейке массива и поставим туда, какой-то знак, пусть это будет вопросительный .

    $NEW_TEXT[5] = ‘?’;

    Вопрос на засыпку… почему нельзя таким образом заменить символ на несколько символов… что произойдет!?

    Смотрим результат…

    � � �N��Nh� � � �чество знаков.

    Если вы не ответили на вопрос, почему нельзя заменить один символ на несколько символов, то ответ простой! Символ можно заменить только на 1 символ! Иначе структура переменной поломается… и замену не увидите, и все, что после этого символа, вместе с символом…

    А если нужно N-ый символ строки заменить на слово!?

    На предложение и т.д… да на что угодно…

    Легко!

    Разобьем(explode) строку в массив, по тому символу, который хотим заменить :

    $TEXT_EX = explode($NEW_TEXT[5],$NEW_TEXT);

    Соединим(implode) массив в строку, в первое значение помещаем все то, на что хотим заменить. Либо туда переменную.

    $TEXT_EX = implode(‘ <red>Здесь любой текст, любой длины</red> ‘, $TEXT_EX);

    Смотрим результат…

    Hello

    Здесь любой текст, любой длины

    world!

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