Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠšΡƒΡ€Ρ "Π―Π·Ρ‹ΠΊ программирования PHP"Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 26

Автор Нина БавСльСва

<?php

$tmpl = $_GET["shablon"];

/* шаблон, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

НапримСр, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ такая строка:

"<h1><!title></h1>

<font

size=-1><!description></font>

<p

align=right><!author><br><!published>

" */

function Show(){

// функция, которая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π·Π°ΠΌΠ΅Π½Ρƒ

// элСмСнта шаблона Π½Π° Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

global $tmpl;

foreach($_GET as $k => $v) {

$tmpl = str_replace("<!$k>",$v,$tmpl);

}

echo $tmpl;

}

Show();

?>



Как эти Ρ„Π°ΠΉΠ»Ρ‹ выглядят для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ? Если ΠΌΡ‹ Π²Π²Π΅Π΄Π΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 8.1, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:


ΠŸΠ΅Ρ€Π²Π°Ρ машина для пСрСписи насСлСния

ИдСя Π½Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ Π·Π°Ρ‚Π΅ΠΌ

ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… автоматичСски

ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π»Π° Π”ΠΆΠΎΠ½Ρƒ Биллингсу, Π° Π΅Π΅

тСхничСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ осущСствил Π“Π΅Ρ€ΠΌΠ°Π½

Π₯ΠΎΠ»Π»Π΅Ρ€ΠΈΡ‚. ΠŸΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Π° Π₯ΠΎΠ»Π»Π΅Ρ€ΠΈΡ‚Π° оказалась

Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

просущСствовала Π΄ΠΎ Π½Π°ΡˆΠΈΡ… Π΄Π½Π΅ΠΉ.

А. М. Π€Π΅Π΄ΠΎΡ‚ΠΎΠ²

12.02.03




Рис. 8.1.  Π€ΠΎΡ€ΠΌΠ° для Π²Π²ΠΎΠ΄Π° описания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Β«ΡΡ‚Π°Ρ‚ΡŒΡΒ» ΠΈ шаблона для Π΅Π³ΠΎ отобраТСния

Ѐункция substr_replace


Π­Ρ‚Π° функция сочСтаСт Π² сСбС свойства Π΄Π²ΡƒΡ… ΡƒΠΆΠ΅ рассмотрСнных Π½Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ str_replace() ΠΈ substr(). Π•Π΅ синтаксис Ρ‚Π°ΠΊΠΎΠ²:


substr_replace (исходная строка,

строка для Π·Π°ΠΌΠ΅Π½Ρ‹,

позиция Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа [, Π΄Π»ΠΈΠ½Π°])


Π­Ρ‚Π° функция замСняСт Ρ‡Π°ΡΡ‚ΡŒ строки строкой, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для Π·Π°ΠΌΠ΅Π½Ρ‹. ЗамСняСтся Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ строки (Ρ‚.Π΅. подстрока), которая начинаСтся с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ позиция Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΄Π»ΠΈΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ число замСняСмых символов. Π’ΠΎ Π΅ΡΡ‚ΡŒ, фактичСски, ΠΌΡ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ строку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ описываСм, Π³Π΄Π΅ ΠΎΠ½Π° находится ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΈΠΌΠ΅Π΅Ρ‚. Π’ этом ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ substr_replace() ΠΎΡ‚ str_replace().


Как ΠΈ Π² случаС с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ substr() Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ позиция Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа ΠΈ Π΄Π»ΠΈΠ½Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Если позиция Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½Π° производится, начиная с этой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ†Π° строки. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° Π·Π°Π΄Π°Π΅Ρ‚, сколько символов ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π° строки Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ. Если Π΄Π»ΠΈΠ½Π° Π½Π΅ указываСтся, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½Π° происходит Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки.


<?php

$text = "МСня Π·ΠΎΠ²ΡƒΡ‚ Вася.";

echo "Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ строка: $text<hr>\n";

/* Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ строки замСнят всю

ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку строкой 'А мСня – ΠŸΠ΅Ρ‚Ρ' */

echo substr_replace($text, 'А мСня – ΠŸΠ΅Ρ‚Ρ',

0) . "<br>\n";

echo substr_replace($text, 'А мСня – ΠŸΠ΅Ρ‚Ρ',

0, strlen($text)) . "<br>\n";

// Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ слово 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚! '

// Π² Π½Π°Ρ‡Π°Π»ΠΎ исходной строки

echo substr_replace($text, 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚! ',

0, 0) . "<br>\n";

// Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ строки замСнят имя Вася

// Π½Π° имя Иван Π² исходной строкС

echo substr_replace($text, 'Иван', 11,

-1) . "<br>\n";

echo substr_replace($text, 'Иван', -5,

-1) . "<br>\n";

?>



Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого скрипта ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:


Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ строка: МСня Π·ΠΎΠ²ΡƒΡ‚ Вася.

------------------------------------------

А мСня – ΠŸΠ΅Ρ‚Ρ

А мСня – ΠŸΠ΅Ρ‚Ρ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ Вася.

МСня Π·ΠΎΠ²ΡƒΡ‚ Иван.

МСня Π·ΠΎΠ²ΡƒΡ‚ Иван.



Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ соСдинСниС строки


ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – функция раздСлСния строки Π½Π° части ΠΈ обратная Π΅ΠΉ функция объСдинСния строк Π² ΠΎΠ΄Π½Ρƒ строку. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅? НапримСр, Ссли Π²Ρ‹ динамичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎ ТСланию ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ элСмСнты для создания списка Π²Ρ‹Π±ΠΎΡ€Π°, раздСляя ΠΈΡ… ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ символом. И для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ пригодится ΡƒΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строку Π½Π° кусочки. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ разбиСния Π² PHP ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:


explode(Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ,исходная строка

[,максимальноС число элСмСнтов])

split (шаблон, исходная строка

[, максимальноС число элСмСнтов])

preg_split (шаблон, исходная строка

[, максимальноС число элСмСнтов

[,Ρ„Π»Π°Π³ΠΈ]])


ПослСдниС Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с рСгулярными выраТСниями, поэтому Π² Π΄Π°Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ – explode().


Ѐункция explode() Π΄Π΅Π»ΠΈΡ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку Π½Π° подстроки, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ сосСднСй с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ раздСлитСля, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… строк. Если Π·Π°Π΄Π°Π½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ максимальноС число элСмСнтов, Ρ‚ΠΎ число элСмСнтов Π² массивС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ большС этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π² послСдний элСмСнт записываСтся вСсь остаток строки. Если Π² качСствС раздСлитСля ΡƒΠΊΠ°Π·Π°Π½Π° пустая строка Β«""Β», Ρ‚ΠΎ функция explode() Π²Π΅Ρ€Π½Π΅Ρ‚ false. Если символа раздСлитСля Π² исходной строкС Π½Π΅Ρ‚, Ρ‚ΠΎ возвращаСтся исходная строка Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.11. ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ элСмСнт Ρ„ΠΎΡ€ΠΌΡ‹ – Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список ΠΈ значСния для этого списка Π΄ΠΎΠ»ΠΆΠ΅Π½ ввСсти ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ с языком html. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:


<form action=exp.php>

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ для Π²Ρ‹Π±ΠΎΡ€Π° Π°Π²Ρ‚ΠΎΡ€Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ

Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ (":"):<br>

<input type=text name=author size=40>

<br>

<input type=submit value=Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ элСмСнт>

</form>



Π‘ΠΊΡ€ΠΈΠΏΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ (exp.php), ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ:


<?php

$str = $_GET["author"];

$names = explode(":",$str);

// Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ строку Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ,

// ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ":"

$s = "<select name=author>";

// создаСм Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список

foreach ($names as $k => $name) {

$s .= "<option value=$k>$name";

// добавляСм элСмСнты ΠΊ списку

}

$s .= "</select>";

echo $s;

?>



Π’ ΠΈΡ‚ΠΎΠ³Π΅, Ссли ΠΌΡ‹ Π²Π²Π΅Π΄Π΅ΠΌ Ρ‚Π°ΠΊΡƒΡŽ строчку Π² Ρ„ΠΎΡ€ΠΌΡƒ:



Рис. 8.2.  Π’Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для создания Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ списка

Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список:



Рис. 8.3.  Π’Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹

ΠšΡ€ΠΎΠΌΠ΅ раздСлСния строки Π½Π° части ΠΈΠ½ΠΎΠ³Π΄Π°, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк Π² ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅. Ѐункция, прСдлагаСмая для этого языком PHP, называСтся implode():


implode (массив строк, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΉ элСмСнт)


Π­Ρ‚Π° функция ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ элСмСнты массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅Π³ΠΎ элСмСнта (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запятой). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ explode(), порядок Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ implode() Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.12. Допустим, ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ имя, Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ ΠΈ отчСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° страницС Π½ΡƒΠΆΠ½ΠΎ вмСстС. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄Π½Ρƒ строку, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ implode():


<?php

$data = array("Иванов","Иван","Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡");

$str = implode($data," ");

echo $str;

?>



Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого скрипта ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ строку:


Иванов Иван Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡


Π£ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ implode() сущСствуСт псСвдоним – функция join(), Ρ‚.Π΅. эти Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ лишь ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.


Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, содСрТащиС html-ΠΊΠΎΠ΄


Достаточно часто ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ со строками, содСрТащими html-Ρ‚Π΅Π³ΠΈ. Если ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ строку Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… echo() ΠΈΠ»ΠΈ print(), Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ самих html-Ρ‚Π΅Π³ΠΎΠ², Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² соотвСтствии с этими Ρ‚Π΅Π³Π°ΠΌΠΈ строку. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС html-Ρ‚Π΅Π³ΠΈ Π² соотвСтствии со стандартом языка HTML. Иногда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ нСпосрСдствСнно строку, Π±Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ htmlspecialchars().


Ѐункция htmlspecialchars (строка [, ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ [, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°]]) ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«<Β», Β«>Β», Β«&Β», Β«"Β» , Β«'Β» Π² Ρ‚Π°ΠΊΠΈΠ΅ сущности языка HTML, ΠΊΠ°ΠΊ Β«&lt;Β», Β«&gt;Β», Β«&amp;Β», Β«&quot;Β», Β«&#039;Β» соотвСтствСнно.


Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡΡ‚ΠΈΠ»ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ опрСдСляСт, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° ENT_COMPAT ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π² спСцсимволы, Π° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ENT_QUOTES Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° ENT_NOQUOTES оставляСт ΠΈ Ρ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.


Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ UTF-8, ISO-8859-1 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° русская ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° здСсь Π½Π΅ поддСрТиваСтся.