ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Обробка рядків у РНР
         

     

    Інформатика, програмування

    Обробка рядків у РНР

    Андрій Кухарчик

    Однією з найбільш часто зустрічаються завдань у програмуванні є обробка символьних послідовностей. Якщо простіше - Строк. Як це робиться на мові гіпертекстового препроцесора РНР і є тема цієї статті.

    Звідки і як можна отримати символьну послідовність? У самому простому випадку - привласнити її потрібної змінної. Інші варіанти - отримати з форми або з файлу. Якщо Ви привласнюєте змінної потрібне значення, то воно, як правило, не потребує обробки, так як програміст робить присвоєння в коді програми, і звичайно, в потрібному вигляді. Але якщо рядок зчитується з файлу, або виходить за допомогою форми, вона (символьний рядок) має потребу в обробці.

    Найперше, що варто зробити, це видалити повторювані пробіли. Для цього в РНР є спеціальна функція: chop (str); Приклад її запису:

    $ str = chop ($ str);

    В результаті, оброблене значення рядка $ str НЕ буде містити повторюваних пробілів. Якщо потрібно переконатися в тому, що рядок не містить пробілів на початку і в кінці, застосовується функція trim (str); ($ str = trim ($ str);). Коли потрібно видалити пробіли тільки з початку рядка, потрібно використовувати ltrim. І якщо вже зайшла мова про початок рядка, давайте переконаємося, що перший символ заголовний. Що б зробити його таким, застосуєте ucfirst (str); Є і функція для перекладу під усіх словах у рядку їх перших літер в великі - ucwords (str);. Крім того, дуже часто буває необхідно порівняти рядок з деяким шаблоном. Приватний випадок - пошук в рядку (про нього трохи пізніше). Але немає ніякої гарантії, що отримана рядок введена користувачем або отримана з файлу відповідно до правилами правопису. Іншими словами - рядок може містити в середині слова або пропозиції чергуються заголовні та прописні символи. Рішення даної проблеми - в застосуванні функцій strtolower (str); і strtoupper (st);. Ці функції, відповідно, переводять символьні рядки в нижній і верхній регістр. Комбінування даних можливостей мови РНР призводить до коректної побудови рядка не залежно від того, як вона була введена або отримана в початковому вигляді.

    Ще одна необхідна річ при роботі з рядками - їх обрізка. Часто вона застосовується при обробці форм для введення даних. Уявіть, що хто-небудь з Ваших <доброзичливців> введе в Вашу гостьову книгу текст цієї статті. Уявляєте, що вийде? Ось для цього і потрібно обмежити кількість символів, що вводять в будь-якому полі форми. Тим більше, що робиться це дуже просто. Для початку, потрібно прописати обмеження в самій формі:

    Тепер форма з ім'ям form обмежена в кількості символів, що вводять числом 100. Але це ще далеко не все. Справа в тому, що обійти таке обмеження дуже просто, і потрібно воно скоріше для того, щоб показати відвідувачеві межу обмеження. Далі потрібно скористатися функцією РНР $ form = substr ($ form, 0,99);. Цим ви просто відрізаєте частина отриманого рядка, перевищує 100 символів (стоїть цифра 99, так як рахунок символів починається з нуля). Тепер всі потуги Ваших знайомих завалити інформацією, що Вас будуть марні, так як Ваш розумний скрипт не пропустить більше певного Вами кількості символів.

    Власне кажучи, у функції substr (string, start, length); зовсім інше призначення. Вона повертає частину рядка string, що визначається параметрами start (початок) та length (довжина). Якщо параметр start позитивний, то повертається рядок буде починатися з start-ого символу рядка string. Приклади:

    $ form = substr ( "abcdef", 1);// поверне "bcdef"

    $ form = substr ( "abcdef", 1, 3);// поверне "bcd"

    Якщо параметр start негативний, то повертається рядок буде починатися start-ого символу від кінця рядка string. Приклади:

    $ rest = substr ( "abcdef", -1);// поверне "f"

    $ rest = substr ( "abcdef", -2);// поверне "ef"

    $ rest = substr ( "abcdef", -3, 1);// поверне "d"

    Якщо параметр length зазначений і він позитивний, то повертається рядок закінчиться за length символів від початку start. Це приведе до рядка з негативною довжиною (тому що початок буде за кінцем рядка), тому повертається рядок буде містити один символ від початку рядка start. Якщо length зазначений і він негативний, то повертається рядок закінчиться за length від кінця рядка string. Це знову призведе до рядка з негативною завдовжки, тому повертається рядок буде містити один символ від початку рядка start. Приклади:

    $ rest = substr ( "abcdef", -1, -1);// поверне "bcde"

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

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

    > спеціальну функцію, яка замінює все входження рядка needle в рядку haystack на

    зазначений рядок str. Ця функція записується так: str_replace (needle, str, haystack);.

    Якщо вам не потрібні химерні правила заміни, то вам повинні завжди використовувати

    <цю функцію замість ereg_replace (). Приклади:

    $ str = str_replace ( "", "n", $ str); //Вирізається символ введення.

    $ str = str_replace ( "red", "black", $ str);// в рядку чорний колір буде замінений на червоний.

    Наступна важлива і корисна функція - знаходження довжини рядка. Синтаксис - strlen (string str); Приклад - $ a = strlen ( "qwerty");. У змінної $ a буде число 6, так як довжина рядка - 6 символів. Ще одна цікава можливість мови РНР - переклад тексту (а значить - і символьних рядків) з однієї кодування в інше. Це дуже корисно, якщо потрібно узгодити кодування, наприклад, сайту і поштової програми. Причому підтримуються самі поширені російські кодування: string convert_cyr_string (str, from, to);. Аргументи from і to є одним символом, який визначає вихідну та цільову кодову таблицю. Підтримувані типи:

    k - koi8-r

    w - windows-1251

    i - iso8859-5

    a - x-cp866

    d - x-cp866

    m - x-mac-cyrillic

    Htmlspecialchars - переводить спеціальні символи в коди HTML. Htmlspecialchars (string); Певні символи мають особливе значення в HTML і повинні бути замінені кодами HTML, якщо вони такі є. Ця функція повертає рядки з виробленими такими змінами. Функція корисна для отчистки отриманого від користувача тексту від розмітки HTML (дошки повідомлень, гостьові книги). Здійснюються наступні заміни:

    '&' (амперсанд) стає '&'

    ' "' (подвійні лапки) стає '"'

    '<' (знак менше) стає '<'

    '>' (знак більше) стає '>'

    Слід зазначити, що ця функція не замінює нічого, крім зазначеного вище. Для повної обробки застосовують функцію htmlentities (). Вона переводить всі можливі символи в коди HTML. Htmlentities (string); Ця функція ідентична htmlspecialchars (), крім того, що всі символи, які мають відповідний код HTML, замінюються на цей HTML код. В даний час застосовується кодова таблиця ISO-8859-1.

    Окремо слід розглянути функції пошуку в рядку. Strchr - Знаходить першу появу символу. strchr (haystack, needle); Ця функція є псевдонімом для функції strstr (), і повністю їй ідентична. Повертає всі haystack з першої появи рядка needle і до кінця. Якщо параметр needle не знайдений, то повертається false. Якщо параметр needle НЕ є рядком, то він переводиться в ціле число та розглядається як числове значення символу. Strrpos - Знаходить позицію останньої появи символу в рядку. Strrpos (haystack, needle); Повертає номер позиції останнього появи символу needle в рядку haystack. Слід зазначити, що needle в цьому випадку може бути тільки єдиним символом. Якщо в якості параметра needle вказується рядок, то тільки перший символ буде використаний. Якщо needle не знайдений, то повертається false. Якщо параметр needle не є рядком, то він переводиться в десяткове число та розглядається як числове значення символу. Strrchr - Знаходить остання поява символу в рядку.

    Strrchr (haystack, needle); Ця функція повертає позицію haystack, з якої починається остання поява needle і триває до кінця haystack. Повертає false якщо needle не знайдено. Якщо параметр needle містить більш ніж один символ, то використовується перший символ. Якщо параметр needle не є рядком, то він переводиться в ціле число та розглядається як числове значення символу. Приклад:

    // отримання всього після останньої нового рядка

    $ text = "Line 1nLine 2nLine 3";

    $ last = substr (strrchr ($ text, 10), 1);

    Strtok - розбиває рядок. strtok (arg1, arg2); Використовується для розбиття рядка. Це означає, що якщо ви маєте рядок типу "Як добре програмувати", то ви можете розбити цей рядок на окремі слова, використовуючи пробіл як роздільник.

    $ string = "Як добре програмувати";

    $ tok = strtok ($ string, "");

    while ($ tok) (echo "Word = $ tok

    "; $ tok = strtok ( "");)

    Слід зазначити, що тільки перший виклик функції strtok використовує рядковий аргумент. Для кожного наступного виклику функції strtok необхідний тільки роздільник, так як це дозволяє контролювати становище в поточному рядку. Для початку заново або для розбиття нового рядка вам необхідно просто викликати strtok з параметром рядка знову для її ініціалізації. Ви можете додавати кілька роздільників в параметр роздільник. Рядок буде розділятися при виявленні будь-якого із зазначених символів. Також будьте уважні до роздільник рівним "0". Це може викликати помилку в певних виразах.

    Ось те, що знадобиться Вам для роботи з рядками в першу чергу. Тут наведений далеко не повний перелік всіх строкових функцій. Розглянуто тільки самі основні. За детальною інформацією я відсилаю Вас до перекладу керівництва по РНР всеросійського клубу Web-майстрів, на основі даних якого і написана ця стаття. Адреса в Інтернеті - http://www.webclub.ru/.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status