Архив

Публикации с меткой ‘PHP’
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:

Понадобилось для поддержания валидности 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

Categories: PHP Tags: ,

В примере мы проверяем длину поискового запроса. :)

$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 символов";
}
Categories: PHP Tags:

Определяем горизонтальная картинка или вертикальная и помещаем ее в div статических размеров.

while ($r = mysql_fetch_array($a))
{
   $image_name = $r['img_name'];
   $image_path = "/path/to/".$image_name;
   $image_ext = end(explode(".", $image_path));
   if ($image_ext == 'png')
   {
      $image_src = imagecreatefrompng($image_path);
   }
   else if ($image_ext == 'gif')
   {
      $image_src = imagecreatefromgif($image_path);
   }
   else
   {
      $image_src = imagecreatefromjpeg($image_path);
   }
   $width_src = imagesx($image_src);
   $height_src = imagesy($image_src);
   if ($width_src > $height_src)
   {
      $used_size = "width='100px'";
   }
   else
   {
      $used_size = "height='100px'";
   }
   imagedestroy($image_src);
   echo "<div style='width: 110px; height: 110px; float: left;'><img ".$used_size." src='/path/to/".$image_name."' alt='some_text' /></div>";
}
Categories: PHP Tags:
17 мая 2010 1 комментарий

Если используются функции например:
imagecreatefrompng($file);
imagecreatefromgif($file);
imagecreatefromjpeg($file);
то после всех необходимых операций обязательно:
imagedestroy($source);
или рано или поздно (если на страничке таким образом производится работа с большим количеством изображений или изображенями большого размера) будет примерно такое:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20232 bytes) in /home/username/data/www/mysite.local/pagename.php on line 44
Пример использования: http://krylov.org.ua/?p=688

Categories: PHP Tags: