PHP 5 для начинающих

Печать

< ?php

$words = "Vote twice or more if you can.";

if (ereg("twice if", $words, $reg)) echo "Найдена строка '$reg[0]'"; ?>

Эта строка не будет совпадать с регулярным выражением, потому что в ней нет точного соответствия образцу. Аналогично пробелы внутри образца также имеют значение:<?php

$words1 = "The bigdog is in the pound..."; $words2 = "{...}but the dog is in the cornfield"; $regexp = " dog";

if (ereg($regexp, $words1, $reg)) echo "Найдена строка '$reg[0]'";

if (ereg($regexp, $words2, $reg)) echo "Найдена строка '$reg[0]'"; ?>

Такое регулярное выражение может найти только второе вхождение слова dog, потому что оба вызова ereg() специально ищут пробел, за которым следует три буквы "d", "o" и "g".

Специальные символы

Синтаксис регулярных выражений включает в себя использование специальных символов (которые не следует путать со специальными символами HTML). В регулярных выражениях специальные символы позволяют создавать более сложные выражения, в которых целые части образца могут состоять из одного из множества символов или совпадение с образцом должно начинаться с определенной позиции строки.

Как уже отмечалось, чтобы экранировать специальное значение какого-либо символа, можно использовать обратную косую черту. Например, для вывода на экран символа двойной кавычки необходимо использовать escape-последовательность \" (то же самое делает функция addslashes() при добавлении строк в базу данных).

Ниже показаны символы, имеющие специальное значение в регулярных выражениях. Для того чтобы использовать их буквально, необходимо предварять их символами обратной косой черты. . * ? + [ ] ( ) { } Л $ | \

Для всех остальных символов автоматически предполагается их буквальное значение. Например, чтобы в предыдущем примере задать образец "...", необходимо использовать следующий код:< ?php

$words1 = "The bigdog is in the pound..."; $regexp = "pound\.\.\.";

if (ereg($regexp, $words1, $reg)) echo "Найдена строка '$reg[0]'"; ?>

Регулярное выражение "pound..." совпадает с частью тестовой строки, кроме этого, оно применимо в следующем примере, потому что точка в данном случае интерпретируется не как точка в регулярном выражении, а как специальный символ, который соответствует любому символу:<?php

$words1 = "The bigdog is in the pound but the dog is in the cornfield."; $regexp = "pound...";

if (ereg($regexp, $words1, $reg)) echo "Найдена строка '$reg[0]'"; ?>