Архив

Архив раздела ‘PHP’

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

Чтобы узнать, делится ли число например на 4, условие будет выглядеть так:

(($num % 4) == 0)

Как пример:

<?php
for ($num=1;$num<=100;$num++)
{
   if (($num % 4) == 0)
   {
      echo "<b>".$num."</b>&nbsp;делится на 4<br/>";
   }
   else
   {
      echo "<b>".$num."</b>&nbsp;не делится на 4<br/>";
   }
}
?>

Хотя правильнее для этого примера будет:

<?php
for ($num=1;$num<=100;$num++)
{
   echo "<b>".$num."</b>&nbsp;";
   if (($num % 4) != 0)
   {
      echo "не&nbsp;";
   }
   echo "делится&nbsp;на&nbsp;4<br/>";
}
?>
Categories: PHP Tags:

Если расширение файла известно то совсем просто (в примере для jpg):

$f="path/to/imagename.jpg";
$src = imagecreatefromjpeg($f);
$w_src = imagesx($src); 
$h_src = imagesy($src);

$w_src — ширина в пикселях;
$h_src — высота.
Для png:

$src = imagecreatefrompng($f);

Для gif:

$src = imagecreatefromgif($f);

Если тип файла заранее неизвестен то как определить подробно написано сдесь: Определить расширение файла средствами PHP

Categories: PHP Tags:

$path — конечно путь к файлу..
1. explode() — полученная строка преобразуется в массив строк, границами которых в оригинале был разделитесь «точка». Для случаев, когда точек несколько — end() возвращает последний элемент массива.

end(explode(".", $path));

2. pathinfo() возвращает ассоциативный массив, содержащий информацию о нужном файле, а именно элементы dirname, basename и extension (если задача узнать не только расширение файла).

$path_info = pathinfo($path);
$ext = $path_info['extension'];

3. strrpos() возвращает позицию последней точки в строке, а substr() вырезает все символы, начиная с полученной ранее позиции точки, до конца строки. Для удаления точки в полученной подстроке, увеличиваем начало старта на одно смещение вправо (+1).

substr($fileName, strrpos($path, '.') + 1);

4. strrchr() возвращает участок строки, следующий за указанным параметром (в нашем случае точкой), после чего substr() отрезает первый символ — точку.

substr(strrchr($path, '.'), 1);

5. array_pop() — выталкивает элемент в конце массива, end() — устанавливает внутренний указатель массива на последний элемент.

array_pop(explode(".", $path));

6. pathinfo

pathinfo($path, PATHINFO_EXTENSION);

7. preg_replace

preg_replace('/^.*\.(.*)$/U', '$1', $path);

8. preg_match

preg_match('/\.(.*)$/U', $path, $matches)? $matches[1]: '';

Подробнее в источнике: http://habrahabr.ru/blogs/php/37753/

Categories: PHP Tags: