Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Обробка рядкових даних без застосування регулярних виразів.



При обробці більших обсягів інформації функції регулярних виражень сильно сповільнюють виконання програми. Ці функції варто застосовувати лише при обробці щодо складних рядків, у яких регулярні вираження дійсно необхідні. Якщо ж аналіз тексту виконується по відносно простих правилах, можна скористатися стандартними функціями РНР, які помітно прискорюють обробку. Всі ці функції описані нижче.

strtok()

Функція strtok( ) розбиває рядок на лексеми по роздільниках, заданим другим параметром. Синтаксис функції strtok( ):

string strtok (string рядок, string роздільники)

У функції strtok( ) є одна чудність: щоб повністю розділити рядок, функцію необхідно послідовно викликати кілька разів. При черговому виклику функція виділяє з рядка наступну лексему. При цьому параметр рядок задається всього один раз - функція відслідковує поточну позицію в рядку доти, поки рядок не буде повністю розібрана на лексеми або не буде заданий новий параметр рядок. Наступний приклад демонструє розбивка рядка по декількох роздільниках:

$info = "WJ Gi1more:wjgilmore@hotmail.com | Columbus, Ohio";

// Обмежники - двокрапка (:), вертикальна риса (|) і кома (.)

$tokens = ":|,";

$tokenized = strtok($info, $tokens);

// Вивести елементи масиву $tokenized

while ($tokenized) :

echo "Element = $tokenized<br>";

// Зверніть увагу: при наступних викликах strtok

// перший аргумент не передається

$tokenized = strtok($tokens);

endwhile;

Результат: Element = WJGilmore Element = wjgilmore@hotmail.com Element = Columbus Element = Ohio

parse_str()

Функція parse_str( ) виділяє в рядку пари <змінн-значення> і привласнює значення змінних у поточній області видимості. Синтаксис функції parse_str( ):

void parse_str (string рядок)

Функція parse_str( ) особливо зручна при обробці URL, що містить дані форм HTML або іншу розширену інформацію. У наступному прикладі аналізується інформація, передана через URL. Рядок являє собою стандартний спосіб передачі даних між сторінками або відкомпільованих у гіперпосиланні, або уведених у форму HTML:

$url = "fname=wj&lname=gilmore&zip=43210";

parse_str($url);

// Після виконання parse_str( ) доступні наступні змінні:

// $fname = "wj":

// $lname = "gilmore";

// $zip = "43210"

Оскільки ця функція створювалася для роботи з URL, вона ігнорує символ амперсанд (&).

explode()

Функція explode() ділить рядок на елементи й повертає ці елементи у вигляді масиву. Синтаксис функції explode():

array explode (string роздільник, string рядок [, int поріг])

Розбивка відбувається по кожному екземплярі роздільника, причому кількість отриманих фрагментів може обмежуватися необов'язковим параметром поріг.

Поділ рядка функцією explode( ) продемонстровано в наступному прикладі:

$info = "wilson | baseball | indians";

$user = explode("|", $info);

// $user[0] = "wilson";

// $user[1] = "baseball";

// $user[2] = "Indians";

Функція explode( ) практично ідентична функції регулярних виражень POSIX split( ), описаної вище. Головне розходження полягає в тім, що передача регулярних виражень у параметрах допускається тільки при виклику split( ).

implode()

Якщо функція explode( ) розділяє рядок на елементи масиву, то її двійник - функція implode( ) - поєднує масив у рядок. Синтаксис функції implode( ):

string implode (string роздільник, array фрагменти)

Формування рядка з масиву продемонстровано в наступному прикладі:

$ohio_cities = array ("Columbus", "Youngstown", "Cleveland", "Cincinnati");

$city_string = implode("l", $ohio_cities);

// $city_string = "Columbus | Youngstown | Cleveland | Cincinnati";

В implode( ) є псевдонім - функція join( ).

strpos()

Функція strpos( ) знаходить у рядку перший екземпляр заданої подстроки. Синтаксис функції strpos():

int strpos (string рядок, string подстрока [, int зсув])

Необов'язковий параметр offset задає позицію, з якої повинен починатися пошук. Якщо подстрока не знайдена, strpos() повертає FALSE (0).

У наступному прикладі визначається позиція першого входження дати у файл журналу:

$log = "

206.169.23.11:/www/:2000-08-10

206.169.23.11:/www/logs/:2000-02-04

206.169.23.11:/www/img/:1999-01-31";

// У якій позиції в журналі вперше зустрічається 1999 рік?

$pos = strpos($log, "1999");

// $pos = 95. оскільки перший екземпляр "1999"

// перебуває в позиції 95 рядка, що втримується в змінної $log

strrpos()

Функція strrpos( ) знаходить у рядку останній екземпляр заданого символу. Синтаксис функції strrpos( ):

int strpos (string рядок, char символ)

По можливостях ця функція уступає своєму двійникові - функції strpos( ), оскільки вона дозволяє шукати тільки окремий символ, а не весь рядок. Якщо в другому параметрі strrpos( ) передається рядок, при пошуку буде використаний тільки її перший символ.

str_replace()

Функція str_replace( ) шукає в рядку всі входження заданої подстроки й заміняє їх нової подстрокой. Синтаксис функції str_replace( ):

string str_replace (string подстрока, string заміна, string рядок)

Функція substr_replace( ), описана нижче в цьому розділі, дозволяє провести замі ну лише в певній частині рядка. Нижче показано, як функція str_replace( ) використається для проведення глобальної заміни в рядку.

Якщо подстрока жодного разу не зустрічається в рядку, вихідний рядок не змінюється:

$favorite_food = "My favorite foods are ice cream and chicken wings";

$favorite_food = str_replace("chicken_wings", "pizza", $favohte_food);

// $favorite_food = "My favorite foods are ice cream and pizza"

strstr()

Функція strstr( ) повертає частина рядка, що починається з першого входження заданої подстроки. Синтаксис функції strstr( ):

string strstr (string рядок, string подстрока)

У наступному прикладі функція strstr( ) використається для виділення імені домена з URL:

$url = "http://www.apress.com"; $domain - strstr($url, ".");

// $domain = ".apress.com"

substr()

Функція substr( ) повертає частина рядка, що починається із заданої початкової позиції й задану довжину, що має. Синтаксис функції substr( ):

string substr (string рядок, int початок [, int довжина])

Якщо необов'язковий параметр довжина не зазначена, уважається, що подстрока починається із заданої початкової позиції й триває до кінця рядка. При використанні цієї функції необхідно враховувати чотири обставини:

· якщо параметр початок позитивний, що повертає подстрока починається з позиції рядка із заданим номером;

· якщо параметр початок негативний, що повертає подстрока починається з позиції (довжина рядка - початок);

· якщо параметр довжина позитивна, у що повертає подстроку включаються всі символи від позиції початок до позиції початок+довжина. Якщо остання величина перевищує довжину рядка, повертаються символи до кінця рядка;

· якщо параметр довжина негативна, що повертає подстрока закінчується на заданій відстані від кінця рядка.

Помнете про те, що параметр початок визначає зсув від першого символу рядка; таким чином, що повертає рядок у дійсності починається із символу з номером (початок + 1).

Наступний приклад демонструє виділення частини рядка функцією substr( ):

$car = "1944 Ford"; Smodel = substr($car, 6);

// Smodel = "Ford"

Приклад з позитивним параметром довжина:

$car = "1944 Ford";

$model = substr($car, 0, 4);

// $model = "1944"

Приклад з негативним параметром довжина:

$car = "1944 Ford";

$model = substr($car, 2, -5);

// $model = "44"

substr_count()

Функція substr_count( ) повертає кількість входжень подстроки в заданий рядок. Синтаксис функції substr_count( ): int substr_count (string рядок, string подстрока) У наступному прикладі функція substr_count( ) підраховує кількість входжень подстроки ain:

$tng_twist = "The rain falls mainly on the plains of Spain";

$count = substr_count($tng_twist, "ain");

// $count = 4

substr_replace()

Функція substr_replace( ) заміняє частина рядка, що починається із заданої позиції. Якщо задано необов'язковий параметр довжину, заміняється фрагмент заданої довжини; у противному випадку виробляється заміна по всій довжині рядка, що заміняє. Синтаксис функції substr_replace( ):

string substr_replace (string рядок, string заміна, int початок [, int довжина])

Параметри початок і довжина задаються за певними правилами:

· якщо параметр початок позитивний, заміна починається із заданої позиції;

· якщо параметр початок негативний, заміна починається з позиції (довжина рядка -початок);

· якщо параметр довжина позитивна, заміняється фрагмент заданої довжини;

· якщо параметр довжина негативна, заміна завершується в позиції (довжина рядка -довжина).

Проста заміна тексту функцією substr_replace( ) продемонстрована в наступному прикладі:

$favs = " 's favorite links";

$name = "Alessia";

// Параметри "0, 0" означають, що замінний фрагмент починається

// і завершується в першій позиції рядка.

$favs - substr_replace($favs, $name, 0, 0);

print $favs:

Результат:

Alessia's favorite links

 

Завдання.

Використовуючи уривок тексту на власний розсуд продемонструвати роботу з ним на прикладі трьох функцій вищеназваних та однієї нижчеприведеної з перелічених функцій.




Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.