Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP_Барчук_довідник.doc
Скачиваний:
3
Добавлен:
31.08.2019
Размер:
1.14 Mб
Скачать

4. Робота з рядками

4.1 Регулярні вирази

Регулярні вирази - надзвичайно потужний інструмент роботи з рядками. З їх допомогою можна проводити аналіз і зміна рядків на основі заданого шаблону.

Шаблон состовляется з набору модифікаторів, деякі з яких наведено у наступній таблиці.

\ - Наступний символ є спеціальним. Так само застосовується для вказівки символів, які можуть використовуватися в якості модифікаторів.

\n - відповідає символу переведення рядка \* - символ "*", а * - модифікатор

^ - Маркер початку рядка.

^abc - рядок, що починається з "abc".

$ - Маркер кінця рядка.

abc$ - рядок, що закінчується на "abc".

* - Попередній символ зустрічається 0 або більше разів.

Шаблоном w* відповідє рядок what, agwt

+ - Попередній символ зустрічається 1 або більше разів.

Шаблоном w+ відповідають рядки what, agwt.

? - Попередній символ зустрічається 0 або 1 раз.

Шаблоном w?r відповідають рядки ara, awra.

. - Відповідає будь-якому символу, відмінному від "\n".

У PHP існує функція для роботи з регулярними виразами: ereg.

Функції з суфіксом i вдають із себе аналоги функцій без цього суфікса, не чувствтітельние до регістру операндів.

Розглянемо функцію ereg (), синтаксис якої: int ereg(string pattern, string string, array [regs]);

Розглянемо деякий адресу maxx@mail.ru. Очевидно, що правдоподібний адреса повинна мати вигляд "слово@слово.слово". У термінах шаблонів довільний символ позначається знаком "." (ми не будемо зараз враховувати той факт, що в адресах припустимі не всі символи). У кожному слові повинен бути принаймні один символ, таким чином, шаблон слова буде мати вигляд ".+". Згадаймо тепер, що "." - це модифікатор, і для явної вказівки точки (в якості символу) потрібно писати "\.".

Таким чином шаблон буде мати вигляд ".+@.+ \ ..+".

Наша перевірка буде мати наступний вигляд:

if( ereg(".+@.+\..+", $email) ) {

echo "Адрес, правильний";

}

else{ echo "Введіть, адресу наново"; }

4.2 Видалення пробілів

Ці функції можуть бути дуже корисні при обробці даних, отриманих з форм.

Видаляє ведучі та кінцеві пробіли в рядку $ s і повертає змінену рядок.

string trim ( string $s );

Приклад

$st = " Hello ";

$st = trim($st);

Рузультат: "Hello"

Видаляє провідні прогалини в рядку $s і повертає змінену рядок. 

string ltrim ( string $s );

Приклад

$st = "H e l l o";

$st = trim($st);

Рузультат: "Hello"

А ось позбавитися від суміжних пробілів всередині рядка, наприклад, за допомогою циклу:

while( strpos($st,' ')!==false )

{

$st = str_replace(' ',' ',$st);

};

4.3 Пошук однакових рядків

Коли користувач починає пошук певних елементів серед введених ним даними, легко допуститися помилок. В цьому випадку можна використовувати метод , котрий дозволяє вилучати слова близькі за значенням до даного слова.

Для цього існує функція similar_text(). Перевіривши два рядки, ця функція вираховує значення, яке показує, на скільки перевірені рядки близькі.

Приклад:

<?

//Створюємо масив імен, які будемо тестувати

$names = array('Robert Smyth', 'Bobby Smythe', 'Roberto Thithe');

//Перебираємо їх в циклі, порівнюючи з іменем «Roberto Smyth»

$output = '';

foreach($names as $name){

similar_text($name, 'Roberto Smyth', $percent);

$output .= "{$name} = {$percent}%\n";

}

//Тепер виводимо значення кожний елемент близькості даного слова у процентах

echo "<pre>{$output}</pre>";

?>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]