PHP 5 для начинающих |
Страница 219 из 813 < ?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]'"; ?> |