Цю статтю я вирішив присвятити всім вивчати початківцям PHP, тому що у всіх виникає та сама помилка. Чому її припускають, не знаю, але припускають постійно. Я без перебільшень скажу, що отримав уже близько сотні питань, на які відповідь буде дано у цій статті. Ця помилка пов'язана з неправильним запуском у PHP.
Як роблять практично всі новачки:
- Створюють PHP-файл(іноді HTML-файл, але це самі новачки).
- Записують туди PHP-код.
- І подвійним кліком намагаються відкрити його у браузері.
Результат, браузер код відкриває, але виконувати його не поспішає. А просто виводить якісь шматки коду звичайним текстом або взагалі нічого не виводить.
Помилка цього підходу полягає в тому, що учень не розуміє, що PHP - це серверна мова, а чи не клієнтський. Це HTMLабо JavaScriptклієнтські мови вони, звичайно, обробляються браузером. Але для PHP потрібен інтерпретатор. І ось цей інтерпретатор запускається сервером.
Висновок: запускати PHP-код треба через сервер. Якщо у вас Denwer, Отже, через нього.
Тепер, як запускати PHP-код через Denwer. Більшість новачків знову роблять помилку. Вони начебто все роблять правильно, створюють потрібні папки, перезапускають Denwerі начебто залишилося тільки правильно викликати файл. Але тут ще одна помилка: вони знову відкривають файл просто в браузері (або перетягуванням файлу в браузер, або подвійним кліком). Це легко можна помітити на адресу в адресному рядку. Там буде щось на кшталт: file:///Z:\home\mysite.local\www\script.php.
А правильно запускати треба, вводячи адресу віртуального хоста. Тобто прямо в адресному рядку браузера вводьте: http://mysite.local/script.php- все, тепер скрипт запуститься та виведе свій результат.
Сподіваюся, дана стаття допоможе багатьом новачкам, які тільки починають вивчати PHP.
|
Зміст
eregereg - парне значення регулярного вираження Описint ereg (string pattern, string string, array); Шукає парні значення stringу регулярному вираженні, зазначеному в pattern . Якщо парні значення знайдені для підстрок у круглих дужках patternта функція викликалася з третім аргументом regs, то парні значення будуть збережені в елементах regs. $regs буде містити підрядок, який починається з першої лівої круглої дужки; string . $regs буде містити підрядок, що починається з другої дужки і т.д. $regs міститиме копію Пошук чутливий до регістру. Функція повертає true, якщо парне значення для pattern було знайдено в string, або false, якщо не було знайдено парних значень або помилка.
Наступний код отримує дату в ISO форматі і виводить у форматі DD.MM.YYYY: Example 1. ereg() example |
If (ereg("((4))-((1,2))-((1,2))", $date, $regs)) ( echo "$regs.$regs.$regs"; ) else ( echo "Invalid date format: $date"; )ereg_replace Описereg_replace - замінює регулярне вираження string ereg_replace (string pattern, string replacement, string string); stringЦя функція сканує patternна парні значення до потім замінює знайдений текст на . replacement patternЯкщо потім замінює знайдений текст намістить підрядки в круглих дужках, то може містити підрядки виду \\цифра
, які будуть замінені текстом, що збігається з цифровим підрядком у дужках; \\0 обробить весь вміст рядка. Може бути використано до 9 підрядків. Дужки можуть бути згруповані, в цьому випадку вони вважаються по дужках, що відкривають. Наприклад, наступний код надрукує "This was a test" тричі: Приклад 1. ereg_replace() |
$string = "This is a test"; echo ereg_replace("is", "was", $string); echo ereg_replace("()is", "\\1was", $string); echo ereg_replace("(()is)", "\\2was", $string); також , , і .eregi Описeregi - нечутливий до регістру пошук парних значень у регулярних виразах int eregi (string pattern, string string, array);eregi_replace Описeregi_replace - заміна регулярного вираження без урахування регістру string eregi_replace (string pattern, string replacement, string string);split Описsplit - розбиває рядок на масив за регулярним виразом array split (string pattern, string string, int); patternПовертає масив рядків, кожен з яких є підрядком рядка, утворені розбиттям цього рядка на частини, відокремлені один від одного . Якщо помилка відбулася, функція поверне false. Для отримання перших 5 полів з рядка /etc/passwd: Ця функція може бути використана для організації нечутливого до регістру порівняння в продуктах, які підтримують тільки чутливі до регістру вирази.
|
#include
#include
int regcomp(regex_t *preg, const char *regex, intcflags);
int regexec(const regex_t *preg, const char *string, size_tnmatch,
regmatch_tpmatch, inteflags);
size_t regerror(interrcode, const regex_t *preg, char *errbuf,
size_terrbuf_size);
void regfree (regex_t *preg);
ОПИС
Компілювання регулярних виразів POSIX
Функція regcomp() використовується для компіляції регулярного вираження у формат, який підходить для подальших пошуків за допомогою regexec().
regcomp() передається вказівник на область зберігання буферного шаблону preg, покажчик на рядок, що закінчується regexта прапори cflags, що використовуються для визначення типу компіляції
Всі пошуки регулярних виразів повинні виконуватися за допомогою скомпілюваного буферного шаблону, тому regexec() повинна завжди викликатися з адресою буферного шаблону, ініціалізованого функцією regcomp().
Значення cflagsможе складатися з порозрядного orнуля або кількох наступних значень:
REG_EXTENDEDВикористовувати синтаксис розширених регулярних виразів POSIX під час інтерпретації regex. Якщо не ввімкнено цей прапор, то використовується синтаксис простих регулярних виразів POSIX. REG_ICASEНе враховувати регістр. Наступні пошуки regexec() з використанням цього буферного шаблону не залежатимуть від регістру. REG_NOSUBНе повідомляти про положення збігів. Параметри nmatchі pmatchдля regexec() ігноруються, якщо цей буферний шаблон був скомпільований з цим увімкненим прапором. REG_NEWLINEОператори збігу з будь-яким символом не збігаються із символом нового рядка. Список символів, що не збігаються ( [^...]
) без символу нового рядка не збігається з новим рядком.
Оператор порівняння на початку рядка ( ^
) збігається з порожнім рядком відразу після нового рядка незалежно від того, що eflags, прапори виконання regexec(), містять REG_NOTBOL.
Оператор порівняння до кінця рядка ($) збігається з порожнім рядком до символу початку рядка незалежно від того, що eflagsмістить REG_NOTEOL.
Порівняння з регулярним виразом POSIX
Функція regexec() використовується для порівняння рядка, що завершується null, з попередньо обробленим буферним шаблоном preg. Аргументи nmatchі pmatchвикористовуються для надання інформації про місцезнаходження будь-яких збігів. Значення eflagsможе бути розрядним АБОодного або обох значень REG_NOTBOLі REG_NOTEOL. Дані значення визначають поведінку порівняння так, як описано нижче. REG_NOTBOLОператор порівняння на початку рядка завжди завершується з помилкою (але дивіться описаний вище прапор компіляції REG_NEWLINE). Цей прапор може використовуватися, коли в regexec() передаються окремі частини рядка, і початок такого рядка в даному випадку не повинен інтерпретуватися як початок нового рядка. REG_NOTEOLОператор порівняння до кінця рядка завжди завершується з помилкою (але дивіться описаний вище прапор компіляції REG_NEWLINE).
Байтові усунення
Якщо REG_NOSUBне встановлений при компіляції буферного шаблону, можливо отримувати інформацію про положення збігів. Значення pmatchмає бути визначено так, щоб мати, принаймні, nmatchелементів. Вони заповнюються regexec() адресами внутрішньорядкових збігів. Зміщення подвиражения, що починається з i-й відкритої дужки, зберігається в pmatch[i]. Адреса збігу всього регулярного виразу зберігається в pmatch(зауважимо, що щоб повернути зміщення збігів Nподвиражений, значення nmatchмає бути не менше N+1). Будь-які невикористані елементи структури матимуть значення -1. Структура regmatch_t, що є типом pmatch, визначена в
:
Typedef struct ( regoff_t rm_so; regoff_t rm_eo; ) regmatch_t;
Кожен елемент rm_so, Не рівний -1, показує початкове зсув наступного збігу найбільшої підрядки всередині заданого рядка. Відносний елемент rm_eoвказує на зсув кінця збігу, який є першим символом після тексту, що збігся.
Повідомлення про помилки POSIX
Функція regerrorвикористовується для перетворення кодів помилок, які можуть бути отримані від regcomp() та regexec(), у рядки повідомлень про помилки. У regerrorпередаються: код помилки errcode, буферний шаблон pregвказівник на символьний буфер рядка errbufта розмір буфера рядка errbuf_size. Функція повертає розмір errbuf, який потрібно зберегти повідомлення про помилку у вигляді рядка, що закінчується null. Якщо і errbuf, і errbuf_sizeне дорівнюють нулю, то errbufзаповнюється першими errbuf_size - 1символами повідомлення про помилку та завершується байтом null ("\0").
Вивільнення буфера шаблону POSIX
Функція regfree() звільняє пам'ять, відведену буферному шаблону pregпід час процесу компіляції за допомогою regcomp().
ПОВЕРНЕНИЙ ЗНАЧЕННЯ
Функція regcomp() повертає нуль при успішній компіляції або в іншому випадку код помилки. Функція regexec() повертає нуль при збігу або REG_NOMATCHякщо збігів не було.
ПОМИЛКИ
Функція regcomp() може повертати такі помилки: REG_BADBRНеправильне використання оператора зворотних посилань. REG_BADPATНеправильне використання операторів шаблону, наприклад операторів групи або списку. REG_BADRPTНеправильне використання операторів повторення, наприклад, використання «*» як перший символ. REG_EBRACEНепарні дужки в операторах інтервалу. REG_EBRACKНепарні квадратні дужки операторів списку. REG_ECOLLATEНеправильний елемент сортування. REG_ECTYPEНевідоме ім'я класу символи. REG_EENDПотенційна помилка. Не визначено у POSIX.2. REG_EESCAPEКінцева зворотна коса характеристика. REG_EPARENНепарні круглі дужки в операторах угруповання. REG_ERANGEНеправильне використання оператора області: наприклад, кінець області з'являється раніше її початку. REG_ESIZEСкомпільований регулярний вираз вимагає буферний шаблон розміром 64 Кб. Це не визначено у POSIX.2. REG_ESPACEДля процедур регулярних виразів закінчилась пам'ять. REG_ESUBREGНеправильне зворотне посилання на вираз. Для початку ми вдосконалимо сторінку реєстрації, додавши можливість завантажувати аватар. Вихідне зображення має бути формату jpg, gif чи png. Також воно має бути не більше 2 Мб. Не турбуйтеся після його стиснення скриптом, розмір аватара буде близько 3 кб і формат jpg. Відкрийте сторінку reg.phpі допишіть у тезі <
form>
рядок enctype="multipart/form-data",як у прикладі:
Реєстрація