Собственно он самый:
<?php
function gen_pass() {
$arr = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m',
'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M',
'1','2','3','4','5','6','7','8','9','0');
$pass = '';
for($i=0;$i<=8;$i++) {
$index = rand(0, count($arr) -1);
$pass .= $arr[$index];
}
return $pass;
}
for ($i=0;$i<=10;$i++) {
echo gen_pass().'<br/>';
}
?>
тут мы генерируем 10 паролей по 8 символов каждый.
изменить это можно:
7 строка: for($i=0;$i<=8;$i++) {
— количество символов
15 строка: for ($i=0;$i<=10;$i++) {
— количество паролей.
Ну или форму отправлять с указанием этих параметров если используется многократно.
Имеется форма на сайте, при сабмите которой POST запросы должны отправляться на сторонний сайт, и у себя мы должны выводить полученные со стороннего сайта результаты.
1. Ну сама наша форма:
echo '<form action="" method="post">';
echo 'Фамилия';
echo '<input type="text" name="lastName" size="10" value="'.$_POST['lastName'].'" />';
echo 'Имя';
echo '<input type="text" name="firstName" size="10" value="'.$_POST['firstName'].'" />';
echo '<input type="submit" name="searchButton" value="Поиск" />';
echo '</form>';
value для text-inputов добавлены для того чтобы после самбита формы указанные данные оставались введенными, можно и без этого
2. Если форма была отправлена:
if (!empty($_POST)) {
$curl = curl_init(); //инициализация сеанса
curl_setopt($curl, CURLOPT_URL, 'http://example.com/'); //урл сайта к которому обращаемся
curl_setopt($curl, CURLOPT_HEADER, 1); //выводим заголовки
curl_setopt($curl, CURLOPT_POST, 1); //передача данных методом POST
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //теперь curl вернет нам ответ, а не выведет
curl_setopt($curl, CURLOPT_POSTFIELDS, //тут переменные которые будут переданы методом POST
array (
'lastName'=>$_POST['lastName'],
'firstName'=>$_POST['firstName'],
'searchButton'=>'get' //это на случай если на сайте, к которому обращаемся проверяется была ли нажата кнопка submit, а не была ли оправлена форма
));
curl_setopt($curl, CURLOPT_USERAGENT, 'MSIE 5'); //эта строчка как-бы говорит: "я не скрипт, я IE5" :)
curl_setopt ($curl, CURLOPT_REFERER, "http://ya.ru"); //а вдруг там проверяют наличие рефера
$res = curl_exec($curl);
//если ошибка то печатаем номер и сообщение
if(!$res) {
$error = curl_error($curl).'('.curl_errno($curl).')';
echo $error;
}
else {
//если результат содержит то что нам надо (проверяем регуляркой), а в данном случае это табличка с классом yaResultat, то выводим ее.
if (preg_match("/\<table class\='yaResultat'(.+)\<\/table\>/isU", $res, $found)) {
$content = $found[0];
echo $content; //перед этим его конечно можно обработать всякими str_replace и т.д.
}
else {
echo "<p>Неизвестная ошибка</p>"; //а если табличики с результатами нет, то печатать нечего и мы незнаем что делать :(
}
}
curl_close($curl);
}
Хорошие ссылки:
http://www.web-junior.net/otpravka-post-zaprosov-s-pomoshhyu-php-otpravka-fajjlov/
http://www.web-junior.net/otpravka-post-zaprosov-s-pomoshhyu-php-chast-2/
http://www.sql.ru/forum/actualthread.aspx?tid=750546
Пример взят с http://forum.searchengines.ru/showthread.php?t=209299
<?php
// $document на выходе должен содержать HTML-документ.
// Необходимо удалить все HTML-теги, секции javascript,
// пробельные символы. Также необходимо заменить некоторые
// HTML-сущности на их эквивалент.
$search = array ("'<script[^>]*?>.*?</script>'si", // Вырезает javaScript
"'<[\/\!]*?[^<>]*?>'si", // Вырезает HTML-теги
"'([\r\n])[\s]+'", // Вырезает пробельные символы
"'&(quot|#34);'i", // Заменяет HTML-сущности
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // интерпретировать как php-код
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text = preg_replace($search, $replace, $document);
?>
Ну а под конкретный случай по примеру)
2020-02-27 Обновлено, в виде функции:
function html_to_text($document){
$search=array(
"'<script[^>]*?>.*?</script>'si",
"'<style[^>]*?>.*?</style>'si",
'/<!--(.*?)-->/',
"'<[\/\!]*?[^<>]*?>'si",
"'([\r\n])[\s]+'",
"'&(quot|#34);'i",
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
);
$replace=array(
"",
"",
"",
"",
" ",
"\"",
"&",
"<",
">",
" ",
);
$text=preg_replace($search,$replace,$document);
return $text;
}
Использовалось для получения первого абзаца содержания новости в ленте новостей.
$text = "<h3>Заголовок</h3><p>Первый абзац</p><p>Второй абзац</p><p>Третий абзац</p>";
$patern="#<[\s]*p[\s]*>([^<]*)<[\s]*/p[\s]*>#i";
if(preg_match($patern, $text, $matches)) echo "<span>".$matches[1]."..</span>";
В результате получим:
<span>Первый абзац..</span>
Понадобилось для поддержания валидности XHTML, когда при написании материалов для сайта теги пишут в верхнем регистре.
Преобразовываем все HTML-теги к нижнему регистру:
<?php
$src = "<H1>Заголовок</H1><P>ТеКст С БукВамИ</P>";
$src = preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtolower('\\2').'\\3'", $src);
echo $src;
?>
если использоваться будет многократно то в функцию:
<?php
function strtolowerTags($str) {
$str = preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtolower('\\2').'\\3'", $str);
return $str;
}
$test = "<H1>Заголовок</H1><P>ТеКст С БукВамИ</P>";
echo strtolowerTags($test);
?>
В результате получаем
<h1>Заголовок</h1><p>ТеКст С БукВамИ</p>
Про preg_replace: http://www.php.ru/manual/function.preg-replace.html
В примере мы проверяем длину поискового запроса. :)
$searchitem = $_POST['search'];
Первый вариант:
$lenght = strlen($searchitem);
echo $lenght;
С одной стороны все правильно, но если кодировка у нас UTF-8, то $n1
будет равно в 2 раза больше чем нам нужно, когда поисковый запрос на русском.
Правильный вариант:
$lenght = mb_strlen($searchitem, 'UTF-8');
echo $lenght;
По теме: http://www.e-mind.ru/news/view/?id=53
Как пример:
if (mb_strlen($searchitem, 'UTF-8') >= 4)
{
Функция_выполняющая_поиск_в_БД();
}
else
{
echo "Ошибка! :( Поисковый запрос не может быть менее 4 символов";
}