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

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

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

И ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ символы ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ

Π±Π΅Π· ΠΈΡ… экранирования ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ слэшСм.

EOT;

?>



Π£ΠΆΠ΅ Π½Π΅ Ρ€Π°Π·, начиная с самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ echo. На самом Π΄Π΅Π»Π΅, echo – Π½Π΅ функция, Π° языковая конструкция, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Echo позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° экран строки, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρƒ echo ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Π˜Ρ… Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ запятыми ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.


<?

echo "ΠŸΡ€ΠΈΡˆΠ΅Π» ", "ΡƒΠ²ΠΈΠ΄Π΅Π» ", "ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» ";

// Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку "ΠŸΡ€ΠΈΡˆΠ΅Π» ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»"

// ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько

// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² echo с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ

echo "ΠŸΡ€ΠΈΡˆΠ΅Π» " . "ΡƒΠ²ΠΈΠ΄Π΅Π» " . "ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» ";

// Ρ‚ΠΎΠΆΠ΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку

// "ΠŸΡ€ΠΈΡˆΠ΅Π» ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»"

echo ("ΠŸΡ€ΠΈΡˆΠ΅Π» ", "ΡƒΠ²ΠΈΠ΄Π΅Π» ", "ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» ");

// выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ: unexpected ','

?>



БущСствуСт сокращСнный синтаксис для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo:


<?=строка_для_Π²Ρ‹Π²ΠΎΠ΄Π°?>


Π—Π΄Π΅ΡΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ строка_для Π²Ρ‹Π²ΠΎΠ΄Π° содСрТит строку, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· извСстных способов, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° Π½Π° экран.


НапримСр, Ρ‚Π°ΠΊΠΎΠΉ скрипт Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° экран красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ "МСня Π·ΠΎΠ²ΡƒΡ‚ Вася":


<? $name="Вася" ?>

<font color=red>МСня Π·ΠΎΠ²ΡƒΡ‚ <?=$name?></font>



ΠšΡ€ΠΎΠΌΠ΅ языковой конструкции echo сущСствуСт ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π° строк. Π­Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ функция print ΠΈ Π΅Π΅ разновидности printf, sprintf ΠΈ Ρ‚.ΠΏ.


Ѐункция print позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° экран Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ строку ΠΈ, ΠΊΠ°ΠΊ ΠΈ echo, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ являСтся языковой конструкциСй.


Ѐункция print_r Π½Π΅ относится ΠΊ строковым функциям, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ. Она ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ΅, понятной ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ sprintf ΠΈ printf ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠΌ строку Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ. Но ΠΎ Π½ΠΈΡ… ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. А ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ поиск Π² тСкстС, прСдставлСнном Π² Π²ΠΈΠ΄Π΅ строки.


Поиск элСмСнта Π² строкС


Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ данная подстрока Π² состав строки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция strpos(). Бинтаксис strpos() Ρ‚Π°ΠΊΠΎΠΉ:


strpos (исходная строка,строка для поиска

[,с ΠΊΠ°ΠΊΠΎΠ³ΠΎ символа ΠΈΡΠΊΠ°Ρ‚ΡŒ])


Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ появлСния искомой строки Π² исходной строкС ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСскоС false, Ссли Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ символ, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ поиск. ΠšΡ€ΠΎΠΌΠ΅ логичСского false эта функция ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводятся ΠΊ false (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 0 ΠΈΠ»ΠΈ ""). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π°ΠΉΠ΄Π΅Π½Π° Π»ΠΈ искомая строка, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ эквивалСнтности Β«===Β».


<?

$str = "ИдСя Π½Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠ΅Ρ€Ρ„ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹

ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ…

автоматичСски ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π»Π° Π”ΠΆΠΎΠ½Ρƒ Биллингсу,

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

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

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

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

$pos = strpos($str,"Π₯ΠΎΠ»Π»Π΅Ρ€ΠΈΡ‚");

if ($pos !== false) echo "Искомая строка

встрСчСна Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½ΠΎΠΌΠ΅Ρ€ $pos ";

else echo "Искомая строка Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°";

/* Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ провСряСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

$pos Π½Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ с false.

Π˜Π½Π°Ρ‡Π΅ строка, находящаяся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ,

Π½Π΅ Π±Ρ‹Π»Π° Π±Ρ‹ Π½Π°ΠΉΠ΄Π΅Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ 0

интСрпрСтируСтся ΠΊΠ°ΠΊ false. */

?>



Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° строка_для_поиска Π½Π΅ являСтся строкой, Ρ‚ΠΎ ΠΎΠ½ΠΎ прСобразуСтся ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΠΈ рассматриваСтся ΠΊΠ°ΠΊ ASCII-ΠΊΠΎΠ΄ символа. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ASCII-ΠΊΠΎΠ΄ любого символа Π² PHP, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ord("символ")


НапримСр, Ссли ΠΌΡ‹ напишСм $pos = strpos($str,228); Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ символ Β«Π΄Β». Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту строчку Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ вывСсти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сообщСниС, Ρ‡Ρ‚ΠΎ искомая строка Π½Π°ΠΉΠ΄Π΅Π½Π° Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 1.


Ѐункция, обратная ΠΏΠΎ смыслу ord, – это chr (ΠΊΠΎΠ΄ символа). Она ΠΏΠΎ ASCII-ΠΊΠΎΠ΄Ρƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ символ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ этому ΠΊΠΎΠ΄Ρƒ.


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strpos ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ появлСния строки Π² исходной строкС. ЕстСствСнно, Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ послСднСго появлСния строки Π² исходной строкС. Π­Ρ‚ΠΎ функция strrpos(). Π•Π΅ синтаксис Ρ‚Π°ΠΊΠΎΠ²:


strrpos (исходная строка, символ для поиска)


Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ strpos() эта функция позволяСт Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ послСднСго появлСния Π² строкС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ символа. НСльзя ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ строки, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ символа.


Π‘Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π³Π΄Π΅ находится искомая строка, Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны послС вхоТдСния этой строки. МоТно, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹ΡˆΠ΅ функциями strpos() ΠΈ strrpos(), Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ – Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ подстроку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½Π½ΠΎ для этого Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.


Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ подстроки


Ѐункция strstr


Говоря ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ подстроки ΠΈΠ· искомой строки Π² языкС PHP, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strstr():


strstr (исходная строка, строка для поиска)


Она Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ появлСниС искомой строки ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подстроку, начиная с этой искомой строки Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° исходной строки.


Если строка для поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, Ρ‚ΠΎ функция Π²Π΅Ρ€Π½Π΅Ρ‚ false. Если строка для поиска Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ строковому Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΎΠ½Π° пСрСводится Π² Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ рассматриваСтся ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ символа. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, эта функция Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ рСгистру, Ρ‚.Π΅. Ссли ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ вхоТдСния слов «ИдСя» ΠΈ «идСя», Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. ВмСсто strstr() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΡƒΡŽ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strchr().


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.4. Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ ΠΈΠ· строки, содСрТащСй Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Π°Π²Ρ‚ΠΎΡ€Π° исслСдования, подстроку, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΡƒΡŽΡΡ со слова «НазваниС»:


<?

$str = "Автор: Иванов Иван (<a

href=mailto: [email protected]>Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ письмо</a>),

НазваниС: 'ИсслСдованиС языков

программирования' ";

echo "<b>Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ строка: </b>",$str;

if (!strstr($str, "НазваниС"))

echo "Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°<br>";

else echo "

<b>ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ подстрока: </b>",

strstr($str, "НазваниС");

?>



Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:


Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ строка: Автор: Иванов Иван

(Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ письмо),

НазваниС: 'ИсслСдованиС языков

программирования'

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ подстрока: НазваниС:

'ИсслСдованиС языков программирования'



Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ рСгистронСзависимого поиска подстроки сущСствуСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – функция stristr (исходная строка, искомая строка). ДСйствуСт ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ½Π° Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ strstr(), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ рСгистр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ записаны символы искомой строки, Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΠΈ ΠΏΡ€ΠΈ поискС.


ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ функция strstr() Π½Π΅ слишком часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ – Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ€Π΅Π΄ΠΊΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ подстроку, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΡƒΡŽΡΡ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ слова ΠΈΠ»ΠΈ строки. Но Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΈ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² PHP Π΅ΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для поиска Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ. НаиболСС ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, связаны с рСгулярными выраТСниями. Π˜Ρ… ΠΌΡ‹ рассмотрим Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ.


Ѐункция substr


Иногда ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, с ΠΊΠ°ΠΊΠΈΡ… символов начинаСтся искомая строка, Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ начинаСтся ΠΎΠ½Π° с пятого символа ΠΈ заканчиваСтся Π·Π° Π΄Π²Π° символа Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° исходной строки. Как Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ подстроку ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ описанию? ΠžΡ‡Π΅Π½ΡŒ просто, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ substr(). Π•Π΅ синтаксис ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


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

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


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


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8.5. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ„Ρ€Π°Π·Π°, выдСлСнная ΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Π³Π° <b> языка HTML. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эту ΠΆΠ΅ Ρ„Ρ€Π°Π·Ρƒ, Π½ΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ стилС. НапишСм Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: