Рождения мужчине search item php i. Многоуровневое меню на PHP и MySQL. WordPress: Использование регулярного выражения для получения картинок из записи

Updated on April 30, 2016

I"m going to show you how to create simple search using PHP and MySQL. You"ll learn:

  • How to use GET and POST methods
  • Connect to database
  • Communicate with database
  • Find matching database entries with given word or phrase
  • Display results

Preparation

You should have Apache, MySQL and PHP installed and running of course (you can use for different platforms or WAMP for windows, MAMP for mac) or a web server/hosting that supports PHP and MySQL databases.

Let"s create database, table and fill it with some entries we can use for search:

  • Go to phpMyAdmin, if you have server on your computer you can access it at http://localhost/phpmyadmin/
  • Create database, I called mine tutorial_search
  • Create table I used 3 fields, I called mine articles.
  • Configuration for 1st field. Name: id, type: INT, check AUTO_INCREMENT, index: primary

INT means it"s integer
AUTO_INCREMENT means that new entries will have other(higher) number than previous
Index: primary means that it"s unique key used to identify row

  • 2nd field: Name: title, type: VARCHAR, length: 225

VARCHAR means it string of text, maximum 225 characters(it is required to specify maximum length), use it for titles, names, addresses
length means it can"t be longer than 225 characters(you can set it to lower number if you want)

  • 3rd field: Name: text, type: TEXT

TEXT means it"s long string, it"s not necessary to specify length, use it for long text.

  • Fill the table with some random articles(you can find them on news websites, for example: CNN, BBC, etc.). Click insert on the top menu and copy text to a specific fields. Leave "id" field empty. Insert at least three.

It should look something like this:

  • Create a folder in your server directory and two files: index.php and search.php (actually we can do all this just with one file, but let"s use two, it will be easier)
  • Fill them with default html markup, doctype, head, etc.

Search

  • Create a form with search field and submit button in index.php, you can use GET or POST method, set action to search.php. I used "query" as name for text field

GET - means your information will be stored in url (http://localhost/tutorial_search/search.php?query=yourQuery )
POST - means your information won"t be displayed it is used for passwords, private information, much more secure than GET

Ok, let"s get started with php.

  • Open search.php
  • Start php ()
  • Connect to a database(read comments in following code)

< to > $query = mysql_real_escape_string($query); // makes sure nobody uses SQL injection $raw_results = mysql_query("SELECT * FROM articles WHERE (`title` LIKE "%".$query."%") OR (`text` LIKE "%".$query."%")") or die(mysql_error()); // * means that it selects all fields, you can also write: `id`, `title`, `text` // articles is the name of our table // "%$query%" is what we"re looking for, % means anything, for example if $query is Hello // it will match "hello", "Hello man", "gogohello", if you want exact match use `title`="$query" // or if you want to match just full word so "gogohello" is out use "% $query %" ...OR ... "$query %" ... OR ... "% $query" if(mysql_num_rows($raw_results) >

".$results["title"]."

".$results["text"]."

"; // posts results gotten from database(title and text) you can also show id ($results["id"]) } } else{ // if there is no matching rows do following echo "No results"; } } else{ // if query length is less than minimum echo "Minimum length is ".$min_length; } ?>

Done!

Now it works. Try different words, variations, editing code, experiment. I"m adding full code of both files in case you think you"ve missed something. Feel free to ask questions or ask for tutorials.

index.php

Search

search.php

Search results = $min_length){ // if query length is more or equal minimum length then $query = htmlspecialchars($query); // changes characters used in html to their equivalents, for example: < to > $query = mysql_real_escape_string($query); // makes sure nobody uses SQL injection $raw_results = mysql_query("SELECT * FROM articles WHERE (`title` LIKE "%".$query."%") OR (`text` LIKE "%".$query."%")") or die(mysql_error()); // * means that it selects all fields, you can also write: `id`, `title`, `text` // articles is the name of our table // "%$query%" is what we"re looking for, % means anything, for example if $query is Hello // it will match "hello", "Hello man", "gogohello", if you want exact match use `title`="$query" // or if you want to match just full word so "gogohello" is out use "% $query %" ...OR ... "$query %" ... OR ... "% $query" if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following while($results = mysql_fetch_array($raw_results)){ // $results = mysql_fetch_array($raw_results) puts data from database into array, while it"s valid it does the loop echo "

".$results["title"]."

".$results["text"]."

"; // posts results gotten from database(title and text) you can also show id ($results["id"]) } } else{ // if there is no matching rows do following echo "No results"; } } else{ // if query length is less than minimum echo "Minimum length is ".$min_length; } ?>

Регулярные выражения – это очень полезный инструмент для разработчиков. С их помощью можно находить, определять или заменять текст, слова или любые другие символы. В сегодняшней статье собраны 15 наиболее полезных регулярных выражений, которые пригодятся любому веб-разработчику.

Введение в регулярные выражения

Многим начинающим разработчикам кажется, что регулярные выражения очень сложны для понимания и использования. На самом деле, все не так уж сложно, как может показаться. Прежде чем мы непосредственно перейдем к регулярным выражениям, с их полезным и универсальным кодом, давайте взглянем на основы:

Синтаксис регулярных выражений

Регулярное выражение Означает
foo Строка “foo”
^foo Строка начинается с “foo”
foo$ Строка заканчивается на “foo”
^foo$ «foo» встречается в строке только один раз
a, b, или c
любой символ в нижнем регистре
[^A-Z] любой символ, не находящийся в верхнем регистре
(gif|jpg) Означает как «gif” так и “jpeg”
+ Один или более символов нижнего регистра
Любая цифра, точка или знак минус
^{1,}$ Любое слово, хотя бы одна буква, число или _
()() wy, wz, xy, или xz
(^A-Za-z0-9) Любой символ (не число и не буква)
({3}|{4}) Означает три буквы или 4 цифры

PHP-функции для регулярных выражений

Функция Описание
preg_match() Функция preg_match() ищет строку по заданному шаблону, возвращает true, если строка находится и false, в остальных случаях
preg_match_all() Функция preg_match_all() находит все вхождения строки, заданной по шаблону
preg_replace() Функция preg_replace(), действует по тому же принципу, что и ereg_replace(), за исключением того, что регулярные выражения можно использовать как для задания шаблона поиска, так и для строки, на которую следует заменить, найденное значение.
preg_split() Функция preg_split(), действует так же как split(), за исключением того, что регулярное выражение можно использовать в качестве параметра для шаблона поиска.
preg_grep() Функция preg_grep() ищет все элементы входного массива, возвращая все элементы, соответствующие шаблону регулярного выражения.
preg_quote() Экранирует символы регулярного выражения

Проверка доменного имени

Проверяем, является ли строка правильным доменным именем

$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) { echo "Your url is ok."; } else { echo "Wrong url."; }

Подсветка слова в тексте

Это очень полезное регулярное выражение, с его помощью вы можете найти нужное слово и подсветить его. Особенно полезно для отображения результатов поиска.

$text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor"; $text = preg_replace("/b(regex)b/i", "1", $text); echo $text;

Подсветка результатов поиска в WordPress блоге

Как уже говорилось в предыдущем примере, этот пример кода, удобно использовать в выдаче поисковых результатов и есть отличный способ внедрить эту функцию в wordpress-блог.

Откройте ваш файл search.php, и найдите функцию the_title(). Замените ее следующим кодом:

Echo $title;

Теперь, выше этой строки, добавьте этот код:

\0", $title); ?>

Сохраните файл search.php, и откройте style.css. Добавьте следующую строку:

Strong.search-excerpt { background: yellow; }

Получение всех картинок из HTML-документа

Если вам когда-нибудь требовалось получить все картинки с веб-страницы, этот код должен быть Вы легко сможете создать загрузчик изображений с помощью возможностей cURL

$images = array(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); unset($data); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($data as $url) { $info = pathinfo($url); if (isset($info["extension"])) { if (($info["extension"] == "jpg") || ($info["extension"] == "jpeg") || ($info["extension"] == "gif") || ($info["extension"] == "png")) array_push($images, $url); } }

Удаление повторяющихся слов (не чувствителен к регистру)

Во время печатания, часто повторяются слова? Поможет это регулярное выражение.

$text = preg_replace("/s(w+s)1/i", "$1", $text);

Удаление повторяющейся пунктуации

То же самое, только для пунктуации. Попрощайтесь с двойными запятыми.

$text = preg_replace("/.+/i", ".", $text);

Поиск XML/HTML тэгов

Эта простая функция, принимает два аргумента. Первый – это тэг, который вам нужно найти, и второй – это переменная, содержащая XML или HTML. Повторюсь, эту функцию очень удобно использовать вместе с cURL.

Function get_tag($tag, $xml) { $tag = preg_quote($tag); preg_match_all("{<".$tag."[^>]*>(.*?)."}", $xml, $matches, PREG_PATTERN_ORDER); return $matches; }

Поиск XHTML/XML тэгов с определенным значением атрибута

Эта функция очень похожа на предыдущую, за исключением того, что вы можете задать тегу нужный атрибут. Например, вы легко сможете найти

.

Function get_tag($attr, $value, $xml, $tag=null) { if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($attr); $value = preg_quote($value); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$value\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $matches, PREG_PATTERN_ORDER); return $matches; }

Поиск шестнадцатеричных значений цветов

Еще один полезный инструмент для веб-разработчика! Он позволяет вам находить/проверять шестнадцатеричные значение цвета.

$string = "#555555"; if (preg_match("/^#(?:(?:{3}){1,2})$/i", $string)) { echo "example 6 successful."; }

Поиск заголовка статьи

Этот фрагмент кода найдет и выведет на экран текст, находящийся внутри тэгов , на html-странице.

$fp = fopen("http://www.catswhocode.com/blog","r"); while (!feof($fp)){ $page .= fgets($fp, 4096); } $titre = eregi("(.*)",$page,$regs); echo $regs; fclose($fp);

Парсинг логов Apache

Большинство сайтов запущено на всем известном веб-сервере Apache. Если ваш сайт находится в их числе, почему бы не использовать PHP и регулярные выражения для разбора логов апача?

//Logs: Apache web server //Successful hits to HTML files only. Useful for counting the number of page views. "^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#status code)200s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$" //Logs: Apache web server //404 errors only "^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#status code)404s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$"

Замена двойных кавычек “умными” кавычками

Если вы любитель типографики, вам понравится это регулярное выражение, заменяющее обычные двойные кавычки, на “умные кавычки”. Похожее регулярное выражение используется в wordpress в контенте страницы.

Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $text);

Комплексная проверка пароля

Это регулярное выражение будет следить за тем, чтобы в текстовое поле было введено не менее шести символов, цифры, дефисы и подчеркивания.

Текстовое поле должно содержать как минимум один символ верхнего регистра, один нижнего регистра и одну цифру.

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)[-_a-zA-Z0-9]{6,}z"

WordPress: Использование регулярного выражения для получения картинок из записи

Поскольку многие из вас являются пользователями WordPress, вам возможно пригодится код, который позволяет получить все картинки, из текста статьи, и вывести их.

Для того, чтобы использовать этот код, просто вставьте его в любой файл вашей темы.

post_content; $szSearchPattern = "~]* />~"; // Run preg_match_all to grab all the images and save the results in $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Check to see if we have at least 1 image $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) { // Now here you would do whatever you need to do with the images // For this example the images are just displayed for ($i=0; $i < $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Генерация автоматических смайлов

Другая функция, используемая в wordpress – позволяет автоматически заменять символы смайлов на картинку смайла.

$texte="A text with a smiley:-)"; echo str_replace(":-)","",$texte);

В этой статье я покажу, как можно создавать многоуровневое меню на PHP и MySQL . Безусловно, вариантов его создания можно придумать много, но, судя по количеству Ваших вопросов на эту тему, Вам нужен пример. И его я приведу в этой статье. Сразу отмечу, что данная статья имеет смысл только для тех, кто знает PHP и умеет работать с MySQL . Всем остальным сначала надо пройти этот , либо прочитать какие-нибудь книги по PHP и MySQL .

Для начала создадим таблицу в базе данных со следующими полями:

  • id - уникальный идентификатор.
  • title - анкор ссылки в меню.
  • link - адрес, на который будет вести пункт меню.
  • parent_id - родительский ID. Если родительского пункта нет, то здесь будет NULL (либо можно ещё 0 поставить).

С таблицей разобрались, теперь пришло время PHP-кода . Полный PHP-код приведён ниже:

$mysqli = new mysqli("localhost", "root", "", "db"); // Подключаемся к БД
$result_set = $mysqli->query("SELECT * FROM `menu`"); // Делаем выборку всех записей из таблицы с меню
$items = array(); // Массив для пунктов меню
while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Заполняем массив выборкой из БД
$childrens = array(); // Массив для соответствий дочерних элементов их родительским
foreach ($items as $item) {
if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Заполняем массив
}
function printItem($item, $items, $childrens) {
/* Выводим пункт меню */
echo "

  • ";
    echo "".$item["title"]."";
    $ul = false; // Выводились ли дочерние элементы?
    while (true) {
    /* Бесконечный цикл, в котором мы ищем все дочерние элементы */
    $key = array_search($item["id"], $childrens); // Ищем дочерний элемент
    if (!$key) {
    /* Дочерних элементов не найдено */
    if ($ul) echo ""; // Если выводились дочерние элементы, то закрываем список
    break; // Выходим из цикла
    }
    unset($childrens[$key]); // Удаляем найденный элемент (чтобы он не выводился ещё раз)
    if (!$ul) {
    echo "
      "; // Начинаем внутренний список, если дочерних элементов ещё не было
      $ul = true; // Устанавливаем флаг
      }
      echo printItem($items[$key], $items, $childrens); // Рекурсивно выводим все дочерние элементы
      }
      echo "";
      }
      ?>

      Этот код полностью рабочий, однако, Вы должны понимать, что так никто не пишет (в частности, вывод через echo HTML-тегов ). И Ваша задача взять алгоритм из этого кода, но не сам код. А дальше этот алгоритм подключить к своему движку. Я постарался тщательно прокомментировать код вывода многоуровневого меню на PHP и MySQL , но, безусловно, он не самый прозрачный и требует уже неплохих начальных знаний. Если Вы ещё плохо знаете PHP и MySQL , то сначала настоятельно рекомендую пройти этот

      Сценарий дня рождения мужчины требует особого внимания. Ведь сильный пол обычно строже оценивает формат проведения праздника. Наш огромный опыт проведения праздников позволяет подобрать идеальный сценарий для дня рождения в зависимости от возраста, склада характера и интересов именинника. Предлагаем для примера сценарий дня рождения мужчины, пользующийся наибольшей популярностью у наших клиентов:

      Ведущая произносит тост за именинника и заканчивает его словами:

      Шампанское в бокалы наливаем
      И дружно выпиваем все до дна!
      За молодость свой тост мы поднимаем,
      А молодость бывает не одна!

      Закончен первый круг, начался новый,
      Ты во вторую молодость вступил.
      Мужчина видный, крепкий и здоровый,
      Ты полон свежих замыслов и сил.

      Таким же оставайся энергичным,
      Ведь ты не зря трудился столько лет!
      Таким же будь веселым, симпатичным,
      И пусть судьба хранит тебя от бед!

      Гости исполняют для виновника торжества старинный цыганский романс
      (двое могут запевать, а все остальные подхватывают припев) :

      Бокалы наливаются,
      В них отблеск янтаря,
      И лица загораются,
      Как вешняя заря!

      С вином тоска уносится,
      Становится светлей,
      И тост на сердце просится:
      Мы пьем за юбилей!

      Припев:

      Хор наш поет напев старинный,
      Льет шампанское рекой!
      За тебя, наш друг любимый,
      Наш именинник (может быть и имя) дорогой!

      Что может быть чудеснее,
      Когда, любовь тая,
      Тебя встречают с песнею
      Родные и друзья!

      Пусть вечер начинается,
      Как жизни новый круг,
      И все мечты сбываются,
      И все цветет вокруг!

      Припев:
      Пей до дна! Пей до дна! Пей до дна!

      Музыкальная пауза.

      Затем призносится тост за родителей .

      Ведущий:

      Ну, а сейчас, друзья, момент настал
      Наполнить за родителей бокал!
      За тех, кто радость жизни подарил
      И в мир прекрасный двери отворил,

      За тех, кто доброте его учил
      И эстафету мужества вручил.
      За тех, благодаря кому, сейчас
      Сидит наш именинник среди нас!

      Итак, пьем за родителей… (называет их по имени-отчеству)

      Музыкальная пауза.

      Ведущий вкратце рассказывает о жизненном пути юбиляра.

      Ведущий: А сейчас мы споем «Старые песни о главном герое нашего праздника» .

      (Гости поют на мотив песни о летчиках)


      Без юбиляра, скажем прямо, делать нечего.
      Мы соберемся за столом,
      Бокалы полные нальем
      И за его здоровье песенку споем:

      Пора нам отметить,
      И день этот встретить

      Пускай тебе не двадцать и не тридцать, пускай!
      Ты планку своей бодрости не опускай!
      Следить будем строго,
      От нас не скроешься, ты так и знай!

      Мы видим бравого, бравого, бравого
      Мужчину стройного, красивого, кудрявого!
      Пусть чередой идут года,
      Но мы желаем, чтоб всегда
      Душа твоя оставалась молода!

      Пора нам отметить,
      Пора отпраздновать, праздновать славный юбилей!
      И день этот встретить
      В большой компании родных, друзей!

      Пускай судьба порою к нам жестока, пускай!
      В ответ ей свои шуточки ты отпускай!
      Следи так же строго,
      Вокруг уныния не допускай!

      Сегодня вечером, вечером, вечером
      Без дорогого юбиляра делать нечего!
      Мы выпьем раз, мы выпьем два
      За юбилей и за дела,
      Но чтобы завтра не болела голова!

      Мы юбиляра любим, уважаем
      И наше поздравленье продолжаем!

      (Гости поют на мелодию песни «Не могу я тебе в День рождения…»:)

      Мы не можем тебе в День рождения
      Дорогой Мерседес подарить,
      Но подарок вручим, без сомнения,
      И готовы сто раз повторить:

      Что ты добрый, веселый, внимательный
      И в делах общепризнанный спец,
      Что вообще ты у нас замечательный
      И товарищ, и муж, и отец!

      Ведущий:

      Мы от души хотим тебя поздравить,
      А также возраст в паспорте исправить,
      Ведь говорит твой вид, твоя улыбка,
      Что лет на десять в паспорте ошибка!

      (Гости поют на мотив солдатской песни «Путь далек у нас с тобою…»)

      Именинник - парень бравый
      Смотрит соколом в строю!
      Уважаем всеми он по праву
      И на службе, как в бою!

      Припев:

      ________ (имя именинника) В путь! В путь! В путь!
      До сотни лет добраться
      И сильным оставаться
      Судьба тебя зовет!
      ________ (имя именинника) Вперед!

      Дорогого юбиляра
      Поздравляем от души!
      И медаль вручаем, и подарок
      В знак заслуг его больших!

      Припев.

      Юбиляру вручается подарок и памятная медаль с надписью : "За большие заслуги в работе, дружбе и любви." (Медаль можно выпилить из дерева и повесить ее на шею имениннику на ленте

      Конкурс на тему «Кто лучше знает именинника»!

      Судьей будет сам именинник.
      Ведущая задает вопросы и вручает фишки за правильные ответы. Тот, кто в конце игры стал обладателем наибольшего количества фишек, получает приз с афтографом именинника.

      Музыкальная пауза.

      Викторина по дням рождения в кино

      Дорогие друзья! Давайте попробуем определить самого эрудированного гостя! Тема, разумеется, все та же - День рождения. Только не в жизни, а на экране!

      За каждый правильный или остроумный ответ вручается фишка. По итогам викторины за наибольшее количество фишек вручается приз. Например, шоколадку. Если гости не могут угадать, ведущая должна дать подсказку, немного напомнить об этом фильме.

      Шуточные вопросы и ответы

      Вы делаете два кулёчка с вопросами и ответами. Вначале человек объявляет, кому он будет задавать вопрос, вытягивает вопрос и зачитывает. Передаёт кулёчек с ответами тому, кого он назвал. Затем тот, кого назвали, вытягивает ответ и зачитывает. Потом тоже объявляет, кому он будет задавать вопрос, вытягивает вопрос и зачитывает. И т.д.

      Танец по команде ведущего

      Поздравительные телеграммы-загадки (в том числе от гостей)

      Ведущая объявляет: Для Тани пришли поздравительные телеграммы, но все они без подписи. Нужно угадать отправителя. Это известные всем люди, а также гости. И даже сказочные герои!

      Пусть шепчут о любви тебе на ушко!
      Царевна по прозванию… Лягушка

      Желаю пить лишь марочные вина!
      Весёлого вам праздника!… Мальвина

      Желаю петь почаще под гитару!
      Хорошей вам компании!… Ротару

      Желаю не встречать любви внеплановой!
      Привет вам музыкальный от… Булановой

      Живи, серёжа, весело и клево!
      Не забывай про детство!… Королёва

      Желаю много музыки и смеха,
      любви и вечной молодости!… Пьеха

      Пускай будет денег всегда до фига!
      И ножки куриные!… Баба яга

      Бывай почаще в поле и в лесу!
      Здоровья тебе крепкого!… Алсу

      унынья никогда не допускайте!
      Большой привет от мамы!… Орбокайте

      Не попадай в ЧП и перестрелки!
      Желаю долгой жизни! Группа… Стрелки

      Тому, кто первый дал правильный ответ, вручаются фишки. За наибольшее количество фишек вручается приз.

      Лотерея-загадка

      Приз получает тот, кто угадал, что за предмет у ведущего в мешке. Можно задавать ведущему наводящие вопросы. Тот отвечает «да» или «нет».

      Лотерея - прогноз

      Все вытягивают билетики или получают их за шутку, анекдот. Во время розыгрыша Ведущий говорит:
      - Сейчас мы испытаем судьбу и узнаем, что она кому приготовила.
      Выдаёт подарки, начиная с первого номера и зачитывает прогноз на ближайший год.

      Тест «Нарисовать несуществующее животное»

      Вы просите гостей нарисовать несуществующее животное и написать его название.

      Тест «нарисуй человечка»

      Нужно нарисовать человека из 12-ти фигур: нужно использовать все фигуры - круг и треугольники, квадраты. (В сумме их 12)

      В заключение вечера можно предложить гостям открыть для именинника счет в банке. После чего вынести 3-х - литровую банку, куда все гости могут бросить по десятке.

      Инструкции