Архив

Архив раздела ‘PHP’
26 октября 2010 1 комментарий

Основной смысл чтобы слова не обрезались)

<?php
//добавляем к тексту пробел в конце, т.к. по пробелам будет делиться текст, без этого последнее слово будет обрезаться
$desc=$sample_text." ";
//2 - на сколько делим, 0.02 - сглаживание (%)
$l=intval(strlen($desc)/2+strlen($desc)*0.02);
//убираем переводы строк
$desc=ereg_replace("[\r\n]"," ",$desc);
//делим текст
preg_match_all("/(.{1,$l})[ \n\r\t]+/",$desc,$descArray);
?>
<table><tr>
	<td><?=$descArray[1][0]?></td>
	<td><?=$descArray[1][1]?></td>
</tr></table>
Categories: PHP Tags:
11 октября 2010 Нет комментариев

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

$eqvsum=substr($eqvsum,0,strpos($eqvsum,'.')+3);

просто

$eqvsum=round($eqvsum,2);

:)

Categories: PHP Tags:
10 августа 2010 Нет комментариев

Собственно он самый:

  1. <?php
  2. function gen_pass() {
  3. 	$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',
  4. 				'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',
  5. 				'1','2','3','4','5','6','7','8','9','0');
  6. 	$pass = '';
  7. 	for($i=0;$i<=8;$i++) {
  8. 		$index = rand(0, count($arr) -1);
  9. 		$pass .= $arr[$index];
  10. 	}
  11. 	return $pass;
  12. }
  13.  
  14.  
  15. for ($i=0;$i<=10;$i++) {
  16. 	echo gen_pass().'<br/>';
  17. }
  18.  
  19. ?>

тут мы генерируем 10 паролей по 8 символов каждый.
изменить это можно:
7 строка: for($i=0;$i<=8;$i++) { — количество символов
15 строка: for ($i=0;$i<=10;$i++) { — количество паролей.
Ну или форму отправлять с указанием этих параметров если используется многократно.

Categories: PHP Tags:
4 августа 2010 8 комментариев

Имеется форма на сайте, при сабмите которой 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

Categories: PHP Tags: ,
16 июня 2010 11 комментариев

Пример взят с 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;
}
Categories: PHP Tags: ,
$text = "<h3>Заголовок</h3><p>Первый абзац. Что-то еще.</p><p>Второй абзац. Что-то еще.</p><p>Третий абзац. Что-то еще.</p>";
$patern="#<[\s]*p[\s]*>([^<]*)<[\s]*/p[\s]*>#i";
if(preg_match($patern, $text, $matches))
{
   $first_p = $matches[1];
   $first_pr = substr($first_p,0,strpos($first_p,'.'));
   echo "<span>".$first_pr."</span>";
}

В результате получим:

<span>Первый абзац</span>
Categories: PHP Tags:
28 мая 2010 2 комментария

Использовалось для получения первого абзаца содержания новости в ленте новостей.

$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>
Categories: PHP Tags: