Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP

Войти
Регистрация
Восстановить пароль
 
 
Даниэль
0 / 0 / 0
Регистрация: 21.08.2014
Сообщений: 5
#1

Обмен готовыми решениями - PHP

02.07.2008, 12:02. Просмотров 46410. Ответов 90
Метки нет (Все метки)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?PHP 
echo getfilesize($_GET['name']); 
 
// Функция для определения размера 
function getfilesize($filename) 
{ 
  // Проверяем, существует ли файл 
  if(!file_exists($filename)) return "файл не существует"; 
  // Определяем размер файла 
  $filesize = filesize($filename); 
  // Если размер файл превышает 1024 байта, 
  // пересчитываем размер в Кбайты 
  if($filesize > 1024) 
  { 
    $filesize = (float)($filesize/1024); 
    // Если размер файл превышает 1024 Кбайта, 
    // пересчитываем размер в Мбайты 
    if($filesize > 1024) 
    { 
      $filesize = (float)($filesize/1024); 
      // Округляем дробную часть до 
      // первого знака после запятой 
      $filesize = round($filesize, 1); 
      return $filesize." Мб"; 
    } 
  } 
  else 
  { 
    return $filesize." байт"; 
  } 
} 
?>
Взято с [Ссылка удалена!]

 Комментарий модератора 
Если хотите поделиться готовыми решениями, то выкладывайте их в эту тему, а не ссылки на Ваш форум и сайт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2008, 12:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обмен готовыми решениями (PHP):

Обсуждение класса постраничной навигации из темы "Обмен готовыми решениями" - PHP
Выделено из темы: http://www.cyberforum.ru/php/thread158262-page2.html Para bellum, может стоит добавить методу get еще один не...

Обмен между php и javascript - PHP
$.ajax({ url: './', type: 'POST', data: {reg_login: log, reg_mail: mail, reg_password: pass,reg:&quot;1&quot;}, ...

обмен данными между серверами - PHP
Всем доброго времени суток! Пишу дипломную работу, тема - модуль обмена данными между серверами. Есть система серверов одного...

Обмен сообщениями - PHP
Как отправить сообщение через свой сайт в браузер тому кто на сайте (без запроса)? И вообще возможно ли такое?

Обмен сообщениями (новичек) - PHP
Вопрос такой: как грамотно организовать обмен сообщениями между пользователями, типо того что в вк и в других соц сетях. Меня больше...

Обмен информацией с Web-сервером - PHP
Создайте веб-приложение, которое формирует возрастающую последовательность из чисел, переданных через поля ввода формы. Рекомендации:...

90
stupidstudent
17 / 14 / 1
Регистрация: 25.10.2011
Сообщений: 241
10.08.2012, 18:47 #16
Цитата Сообщение от Василий Макогон Посмотреть сообщение
Моё решение пагинации: http://www.pagination.ru
не хочу вмешиваться, но:
Комментарий модератора romchiksoad
Если хотите поделиться готовыми решениями, то выкладывайте их в эту тему, а не ссылки на Ваш форум и сайт
0
Василий Макогон
269 / 225 / 3
Регистрация: 20.04.2012
Сообщений: 820
10.08.2012, 22:32 #17
Цитата Сообщение от stupidstudent Посмотреть сообщение
не хочу вмешиваться, но:
выкладывать скрипты как есть - плохая практика. скрипты периодически обновляются авторами и что бы они были в актуальном состоянии, их нужно качать исключительно из авторских источников.
0
Jallik Lich
Исследователь
194 / 173 / 1
Регистрация: 30.10.2011
Сообщений: 605
11.08.2012, 01:54 #18
Василий Макогон, поддерживаю.
Почему нельзя давать ссылки на официальные страницы скриптов?
0
magirus
11.08.2012, 09:07
  #19
 Комментарий администратора 
на оф страницы скриптов можно. на форумы нельзя.
0
KeyGen
384 / 291 / 6
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
24.03.2013, 02:21 #20
Писал изучая php класс капчи (в папке еще класс QDir и QCodeGen):

Привожу код html и класс капчи остальные классы в исходниках:

PHP
1
2
3
4
// В папке QCaptcha две папки:
// captchaBack - фоны для капчи, скидывая туда фоны класс сам просматривает папку на файлы *.png
// captchaTTF - шрифты работают также, просто кидаем туда нужный шрифт и он будет отображаться
// QCodeGen есть еще методы интересно смотрите там

PS: При клике по капче она меняется.


index.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Test class</title>
</head>
 
<body>
    <table style="width: 100%; height: 100%; text-align: center;">
        <tr>
            <td>
                <p><a href='#' onclick="document.getElementById('captchaImg').src='Qp/QCaptcha/classQCaptcha.php?'+Math.random(); return false;"><img id='captchaImg' src='Qp/QCaptcha/classQCaptcha.php'></a></p>
            </td>
        </tr>
    </table>
</body>
</html>

class (classQCaptcha.php):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
 
namespace Qp;
 
session_start();
 
include_once('../QCodeGen/classQCodeGen.php');
include_once('../QDir/classQDir.php');
 
class QCaptcha {
 
    private $dirImage;
    private $dirTff;
    private $fontSize = 16;
    private $lines = 6;
    private $sizeCode;
    private $enumCode;
 
    private $arrImage = array();
    private $arrTtf = array();
    // Конструктор
    function __construct($sizeCode = 8, $enumCode = 0){
        $this->dir = 'codeGen/';
 
        $this->dirImage = 'captchaBack/';
        $this->dirTff = 'captchaTTF/';
 
        $this->enumCode = $enumCode;
        $this->sizeCode = $sizeCode;
 
        $qDir = new QDir($this->dirImage);
        $this->arrImage = $qDir->entryListFiles('png');
        $qDir->setDir($this->dirTff);
        $this->arrTtf = $qDir->entryListFiles('ttf');
    }
    // Установка размера шрифта
    function setFontSize($fontSize){
        $this->fontSize = $fontSize;
    }
    // Установка количества линий
    function setNumLines($lines){
        $this->lines = $lines;
    }
 
    function getCaptcha(){
 
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
        header("Cache-Control: no-store, no-cache, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0", false);
        header("Pragma: no-cache");
        header("Content-Type:image/png");
 
        $img = imagecreatefrompng($this->dirImage.$this->arrImage[rand(0,count($this->arrImage)-1)]); //создаем изображение со случайным фоном
 
        // Рисуем линии
        for ($i=0; $i<$this->lines; $i++){
            $color = imagecolorallocate($img, rand(0, 150), rand(0, 100), rand(0, 150));
            imageline($img, rand(0, -10), rand(1, 50), rand(150, 180), rand(1, 50), $color);
        }
 
        $color = imagecolorallocate($img, rand(0, 200), 0, rand(0, 200));
 
        // Генерируем нужный пароль
        $codeGen = new QCodeGen($this->sizeCode);
 
        switch($this->enumCode){
            case 0:
                $codeGen->genCodeEng_Number();  // Генерируется код англ+цифры
                break;
            case 1:
                $codeGen->genCodeEng();         // Генерируется код англ
                break;
            case 2:
                $codeGen->genCodeNumber();      // Генерируется код цифры
                break;
        }
 
        $code = $codeGen->getCode(); // Получение кода из класса
 
        $_SESSION['captchaCode'] = $code; // Сохранение кода в сессии для проверки
 
        imagettftext ($img, $this->fontSize, rand(0, 4), rand(0, 25), rand(30, 40), $color, $this->dirTff.$this->arrTtf[rand(0,count($this->arrTtf)-1)], $code);//накладываем код
 
        //еще раз линии! Уже сверху.
        for ($i=0; $i<$this->lines; $i++){
            $color = imagecolorallocate($img, rand(0, 150), rand(0, 100), rand(0, 150));
            imageline($img, rand(0, 150), rand(0, 0), rand(0, 0), rand(150, 150), $color);
        }
 
        ImagePNG($img);
        ImageDestroy($img);//ну вот и создано изображение!
    }
}
 
$captcha = new QCaptcha(6,1); // Установливаем размер кода(1) и тип пароля(2(0,1,2))
$captcha->setFontSize(20);   // Установка размера шрифта
$captcha->setNumLines(4);    // Установка количества линий (перечеркуют шрифт)
$captcha->getCaptcha();      // Выводим капчу
 
// Удачи!
Уже выложил исходники: http://www.cyberforum.ru/php-beginne...ml#post4299655
1
popropusku
3 / 3 / 0
Регистрация: 19.10.2012
Сообщений: 123
10.04.2013, 11:25 #21
Цитата Сообщение от Alex1OPS Посмотреть сообщение
Улучшенный вариант Загрузка файлов на сервер:
Форма:
HTML5
1
2
3
4
<form action="./upload.php" method="post" enctype="multipart/form-data">
<p><input type="file" name="userfile" id="file"></p>
<p><input type="submit" value="Загрузить фаил"></p>
</form>
Файл upload.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
$allowed_filetypes = array('.jpg','.gif','.bmp','.png'); // Здесь мы перечисляем допустимые типы файлов
 
$max_filesize = 524288; // Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
 
$upload_path = './files/'; // Место, куда будут загружаться файлы (в данном случае это папка 'files').
 
$filename = $_FILES['userfile']['name']; // В переменную $filename заносим точное имя файла (включая расширение).
 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // В переменную $ext заносим расширение загруженного файла.
 
// Сверяем полученное расширение со списком допутимых расширений, которые мы определили в самом начале. Если расширение загруженного файла не входит в список разрешенных, то прерываем выполнение программы и выдаем соответствующее сообщение.
 
if(!in_array($ext,$allowed_filetypes))
die('Данный тип файла не поддерживается.');
 
// Теперь проверим размер загруженного файла и если он больше максимально допустимого, то прерываем выполнение программы и выдаем сообщение.
 
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
die('Фаил слишком большой.');
 
// Проверяем, доступна ли на запись папка, определенная нами под загрузку файлов (папка files). Если вдруг недоступна, то выдаем сообщение, что на папку нужно поставить права доступа 777.
 
if(!is_writable($upload_path))
die('Невозможно загрузить фаил в папку. Установите права доступа - 777.');
 
// Загружаем фаил в указанную папку.
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
{
echo 'Ваш фаил успешно загружен <a href="' . $upload_path . $filename . '">смотреть</a>'; 
}
else
{
echo 'При загрузке возникли ошибки. Попробуйте ещё раз.';
}
?>
Добавлено через 2 минуты
Можно использовать формирование имени загруженного файла таким образом:
PHP
1
$filename = $_FILES['userfile']['name'].time();
Не работает такое переименование
PHP
1
$filename = $_FILES['userfile']['name'].time();
0
Василий Макогон
269 / 225 / 3
Регистрация: 20.04.2012
Сообщений: 820
15.04.2013, 19:18 #22
класс для работы с СУБД MySQL, с драйвером mysqli: http://www.phpinfo.su/articles/addit...ubd_mysql.html
1
fullzero
10 / 11 / 2
Регистрация: 20.05.2012
Сообщений: 116
30.05.2013, 13:45 #23
Быстрый способ создать алфавитный указатель
PHP
1
2
3
4
5
6
<?php
//От A до Z
foreach(range('A', 'Z') as $letter) {
echo "<a href=\"".$letter."\">".$letter."</a> ";
}
?>
2
Dealiss
292 / 281 / 25
Регистрация: 10.05.2013
Сообщений: 920
28.07.2013, 05:52 #24
Альтернатива str_split().
Данная функция умеет разбирать строку по символа в массив, с учетом русских и английских букв.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function getSimbol($text){
    /*
    $text - обрабатываемая строка
    */
    $count = strlen($text); // Подсчитывает к-тво символов
    $array = array(); // пустой массив
    $i = 1;     // текущий номер сивола
    $s = 0;     // указатель начала символа
    while($i <= $count)
     {
        if($i!=1)                   // отслеживаем 1 заход
                $s = $s +2 ;    // так как нужно начинать с 0 символа
        $check = substr($text,$s,1);        // зачитывем символ
        if($check != "")
          {                           
            if(mb_detect_encoding($check)=='UTF-8')     // определяем UTF-8 кодировку
                {                       // так как UTF-8 весит 2 байта
                $sim = substr($text,$s,2);          // зачитывать будем с $s до 2
                }                    
            elseif(mb_detect_encoding($check)=='ASCII') // определяем ASCII кодироку
                {                               // так как ASCII весит 1 байт
                $sim = substr($text,$s,1);                      // зачитывать будем с $s до 1
                $s--;                                // -1 от $s, так как ASCII = 1 байт
                }                                          
            array_push($array,$sim);    // записываем $sim в массив $array
        }   
        $i++;   // + 1 к текущему номеру символа
    }
    return $array; // Возвращаем массив с символами
}
Пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$str = "Привет мир! - Hello world!";
$r = getSimbol($str);
/*
Получим:
Array
(
    [0] => П
    [1] => р
    [2] => и
    [3] => в
    [4] => е
    [5] => т
    [6] =>  
    [7] => м
    [8] => и
    [9] => р
    [10] => !
    [11] =>  
    [12] => -
    [13] =>  
    [14] => H
    [15] => e
    [16] => l
    [17] => l
    [18] => o
    [19] =>  
    [20] => w
    [21] => o
    [22] => r
    [23] => l
    [24] => d
    [25] => !
)
*/
1
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16703 / 6625 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
28.07.2013, 12:58 #25
Цитата Сообщение от Dealiss Посмотреть сообщение
так как UTF-8 весит 2 байта
Dealiss, это в корне неверно
во-первых, не весит, во-вторых, не все символы занимают по 2 байта..
PHP
1
var_dump(getSimbol('%@#№'));
1
Dealiss
292 / 281 / 25
Регистрация: 10.05.2013
Сообщений: 920
28.07.2013, 16:55 #26
Не знал, что № = 3 байтам ...
Это только № может занимать 3 байта, или ещё и другие символы?
Я проверил "%@#№&*?/.,`+ё~^-=\|"... все кроме № равны 1 байту
1
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16703 / 6625 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
28.07.2013, 17:21 #27
Dealiss, http://ru.wikipedia.org/wiki/UTF-8#.....D1.8B_Unicode
1
Camaro396
38 / 38 / 1
Регистрация: 22.07.2013
Сообщений: 197
04.08.2013, 13:30 #28
Класс для формирования карты сайта. Есть ещё для формирования идекса карт сайта, там почти то же самое.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
/*
* Класс карты сайта. Поддерживает toString.
* @todo Добавить сохранение/загрузку карты с поддержкой 10Мб / 50K лимита
* Пример использования:
* <code>
* date_default_timezone_set('UTC');
* $a = new SiteMap;
* $arImages = array (
*                 array (
*                     'loc' => 'http://www.ex.com/1.jpg',
*                     'title' => '<Me>',
*                     'geo_location' => 'Tver, Russia',
*                     'caption' => 'Me & my cat',
*                     'license' => 'http://www.ex.com/license'
*                 ),
*                 'http://www.ex.com/1.jpg'
*             );
* $a->pushItem('http://www.ex.com/example', time(), 0.7, 'daily', $arImages);
* $a->pushItem('http://www.ex.com/aboutus', time(), 0.5, 'weekly');
* // Записать в файл
* file_put_contents('./sitemap.xml', $a->getDocument());
* // Показать, что получилось
* echo $a;
* </code>
*
*/
class SiteMap
{
    const SITEMAP_NS = 'http://www.sitemaps.org/schemas/sitemap/0.9';
    const IMAGES_NS = 'http://www.google.com/schemas/sitemap-image/1.1';
 
    /*
    * Варианты частоты обновления URL, если будет подан неправильный вариант, он будет тихо проигнорирован
    */
    static $arChangeFreq = array('always',
                                    'hourly',
                                    'daily',
                                    'weekly',
                                    'monthly',
                                    'yearly',
                                    'never');
 
    /*
    * Объект для форматирования времени по W3C
    */
    private $datetime;
    private $xmlDoc;
    private $xmlRoot;
    private $bImagesEnabled = false;
 
    public function __construct() {
        $this->datetime = new DateTime;
        $this->xmlDoc = new DOMDocument('1.0', 'UTF-8');
        $root = $this->xmlDoc->createElementNS(self::SITEMAP_NS, 'urlset');
        $this->xmlRoot = $this->xmlDoc->appendChild( $root );
    }
 
    /*
    * @param float $priority - приоритет страницы
    * @param array $images - массив либо адресов картинок, либо массивов, содержащих параметры картинок
    */
    public function pushItem($url, $lastmod=null, $priority=null, $changefreq=null, $images=array()) {
        $xml =& $this->xmlDoc;
        $root =& $this->xmlRoot;
 
        if(!isset($url)) {
            return false;
        }
 
        array_walk_recursive($images, array(__class__, '_escapeAmp'));
        self::_escapeAmp($url);
 
        $el = $root->appendChild( $xml->createElement('url') );
        $el->appendChild( $xml->createElement('loc', $url ) );
 
        if(isset($lastmod)) {
            if(!is_numeric($lastmod)) {
                $lastmod = strtotime($lastmod);
            }
 
            if($lastmod == 0) {
                throw new Exception('Invalid last modification date supplied.');
            }
 
            $this->datetime->setTimestamp($lastmod);
            $el->appendChild( $xml->createElement('lastmod', $this->datetime->format(DateTime::W3C)) );
        }
 
        if(isset($priority) and is_float($priority)) {
            $priority = round($priority, 1);
            $el->appendChild( $xml->createElement('priority', (string)$priority ) );
        }
 
        if(isset($changefreq) && in_array($changefreq, self::$arChangeFreq)) {
            $el->appendChild( $xml->createElement('changefreq', $changefreq ) );
        }
 
        if(count($images) > 0) {
            $this->_enableImages();
            foreach($images as $image) {
                $img = $el->appendChild( $xml->createElement('image:image') );
 
                if(is_array($image)) {
                    if(isset($image['loc'])) {
                        $img->appendChild( $xml->createElement('image:loc', $image['loc']) );
                        isset($image['caption'])      ? $img->appendChild( $xml->createElement('image:caption', $image['caption']) )           : null;
                        isset($image['geo_location']) ? $img->appendChild( $xml->createElement('image:geo_location', $image['geo_location']) ) : null;
                        isset($image['title'])        ? $img->appendChild( $xml->createElement('image:title', $image['title']) )               : null;
                        isset($image['license'])      ? $img->appendChild( $xml->createElement('image:license', $image['license']) )           : null;
                    }
                } else {
                    $img->appendChild( $xml->createElement('image:loc', $image) );
                }
            }
        }
    }
 
    public function getDocument() {
        return $this->xmlDoc->saveXML();
    }
 
    public function __toString() {
        return $this->getDocument();
    }
 
    /* Добавляет пространство имён для картинок */
    private function _enableImages() {
        if(!$this->bImagesEnabled) {
            $this->xmlRoot->setAttribute('xmlns:image', self::IMAGES_NS);
            $this->bImagesEnabled = true;
        }
    }
 
    /*
    * Закодировать амперсанды, не повредив при этом HTML-сущности (а точнее повредить, но потом вернуть на место :))
    * Добавлено сюда только для самостоятельности класса
    */
    private static function _escapeAmp(&$str) {
        $str = str_replace('&', '&amp;', $str);
        $str = preg_replace('/&amp;(([a-z]+|([#][\dx]{1,10}));)/', '&$1', $str);
    }
}
1
Gauga
23 / 23 / 1
Регистрация: 04.07.2013
Сообщений: 260
18.08.2013, 21:10 #29
Цитата Сообщение от nepster Посмотреть сообщение
.. все работает замечательно .. делал под себя, для меня очень удобно )
Можете доделать свою пагинацию так, чтоб она отображала перейти на первую страницу или в конец? Она была бы незаменима!
0
sqlnub
Заблокирован
16.10.2013, 13:37 #30
Внеклассовая пока еще функция форматирования данных в хтмл тег. Насмотревшись на монструозные классы категории отображения, которые пристроить решительно невозможно, написал эту фишку которая в общем-то может одна, в последовательном применении, конечно, может сгенерить страницу без заголовка. Потому что в заголовках неформальные мета-теги и вообще выпадающий из схемы doctype.

Если есть нечто похожее, получше, интересно было бы посмотреть.

/*
На входе список аргументов по соглашению:
1-й всегда имя тега
2-й значение тега. Если тег подразумевается пустой - null обязателен.
затем атрибуты парами: имя - значение
если значение атрибута null - он будет пропущен целиком
атрибут длиной 0 - будет включен в тег
атрибуты типа checked, disabled, selected могут быть без пары
поэтому они по соглашению должны быть всегда последними
наличие такого атрибута означает что он true и в его значение
функция сама подставит его же имя, что соответствует спецификации
в функцию зашит список пустых тегов и дана ссылка откуда он взят

внутри каменты английскими буквами - так я пытаюсь каментить для себя

юзанье:

PHP
1
$var = tag('a', 'форум', 'href', 'http://www.cyberforum.ru/', 'title', 'Форум программистов');
HTML5
1
<a href="http://www.cyberforum.ru/" title="Форум программистов"</a>
PHP
1
$var = tag('img', null, 'src', 'http://www.cyberforum.ru/images/cyberforum_logo.jpg', 'alt', 'Лого');
HTML5
1
<img src="http://www.cyberforum.ru/images/cyberforum_logo.jpg" title="Лого" />
PHP
1
$check = tag('input', null, 'type', 'checkbox', 'name', 'checkitnow', 'value', '1', 'checked');
HTML5
1
<input type="checkbox" name="checkitnow" value="1" checked="checked"/>
*/

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function tag() {
 
    $num = func_num_args();
    
    if($num < 2) 
        return '<del>ERROR TAG: TOO SHORT LIST</del>';
    
    $args = func_get_args();
    
    if(!$args[0])
        return '<del>ERROR TAG: NO ELEMENT NAME</del>';
 
    
    // check for an single (the last!) attribute like 'selected' 'checked' etc  
    // its name will be used as its value
    if($num % 2) 
        $args[] = $args[$num-1];
    
    $args[0] = strtolower($args[0]);
    
    $t = '<' . $args[0];
 
    // build attributes
    for($cnt = 2; $cnt < $num; $cnt += 2) {
        if($args[$cnt + 1] === null) continue;
        $t .= ' ' . $args[$cnt] . '="' . $args[$cnt+1] . '"';
    }
    
    // http://www.w3.org/TR/html-markup/syntax.html#void-element
    $void = in_array($args[0], array('area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'));
    
    if($void) // no text node, a void element 
        $t .=  ' />';
    else  // add text node
        $t .= '>' . $args[1] . '</' . $args[0] . '>';
        
    return $t;
    
}
0
16.10.2013, 13:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 13:37
Привет! Вот еще темы с ответами:

обмен сообщениями на сайте пользователями - PHP
как реализовать обмен сообщениями на сайте пользователями? помогите и пожалуйста в подробностях опишите!)

Обмен данными между процессами - PHP
Здравствуйте! Задача такая: есть скрипт на php который постоянно в памяти и при каждом запросе запускается скрипт пользователя. как...

Обмен готовыми решениями - Web-дизайн
Привет, мир! Предлагаю здесь обмениваться готовыми решениями, исключительно html + css. Итак, вот сверстал необычный дизайн, без...

Обмен готовыми решениями - JavaScript
Предлагаю обмениваться готовыми, рабочими!, скриптами. Выкладываю первую библиотеку из 35 скриптов. Может кому и пригодится скачать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru