PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (10): В начало « ... 2 3 4 5 6 7 8 [9] 10 »

> Найдено сообщений: 139
skiphog Отправлено: 30 Декабря, 2014 - 09:33:50 • Тема: Помогите распарсить XML • Форум: Вопросы новичков

Ответов: 3
Просмотров: 250
PHP:
скопировать код в буфер обмена
  1. $xml = simplexml_load_file($xml);
  2. // либо из строки $xml = new SimpleXMLElement($xml)
  3. // бегаем по узлам bot
  4. foreach($xml->bot as $bot) {
  5.   //бегаем по атрибутам узла bot
  6.   foreach($bot->attributes() as $key => $value) {
  7.     echo $key; // здесь атрибут
  8.     echo $value; // здесь значение атрибута
  9.   }
  10.   echo $bot; // сам текст в bot
  11. }
skiphog Отправлено: 30 Декабря, 2014 - 08:56:02 • Тема: Скачивание файлов с сервера+счет через мускул • Форум: Вопросы новичков

Ответов: 21
Просмотров: 3002
ойой
skiphog Отправлено: 27 Декабря, 2014 - 10:05:54 • Тема: нужно каждые 2 итерации цикла обвернуть в div • Форум: Вопросы новичков

Ответов: 6
Просмотров: 724
Попробуйте в коде от RickMan, поменять 8 строку на
PHP:
скопировать код в буфер обмена
  1. <?PHP if ($i % 2){ echo "</div>"; } ?>

Потому, что закрывать див нужно только после нечетного элемента.
По той же причине замените 12 строку на
PHP:
скопировать код в буфер обмена
  1. <?PHP if ($i_wrapper % 2){ echo "</div>"; } ?>
skiphog Отправлено: 22 Декабря, 2014 - 17:40:32 • Тема: Помогите ребята ПХП • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 68
Karapet пишет:
skiphog
Он выдает вот такой ответ

array(8) { [0]=> int(1) [1]=> int(3) [2]=> int(5) [3]=> int(7) [4]=> int(9) [5]=> int(11) [6]=> int(15) [7]=> int(17) }

что то не то (


Почему не то? В массиве $arrB собраны все положительные числа из массива $arrA, где индекс - четное число.
Если вы хотите еще и индекс из массива вытащить то измените
PHP:
скопировать код в буфер обмена
  1. if($key % 2 == 0 && $value > 0) {
  2.     $arrB[] = $value;
  3.   }

на
PHP:
скопировать код в буфер обмена
  1. if($key % 2 == 0 && $value > 0) {
  2.     $arrB[$key] = $value;
  3.   }
skiphog Отправлено: 22 Декабря, 2014 - 17:10:29 • Тема: jQuery: получение id изменяемого поля • Форум: JavaScript & VBScript

Ответов: 4
Просмотров: 803
Вытащить ID импута, который был изменен.
CODE (javascript):
скопировать код в буфер обмена
  1. $('#tableFiles').on('change','input',function(){
  2.  alert(this.id);
  3. });
skiphog Отправлено: 20 Декабря, 2014 - 20:03:32 • Тема: Замена слов на ссылки в html коде • Форум: Вопросы новичков

Ответов: 4
Просмотров: 319
PHP:
скопировать код в буфер обмена
  1. $html= preg_replace("/$word/","<a href=\"$link\">$word</a>", $html,2);
skiphog Отправлено: 20 Декабря, 2014 - 19:28:17 • Тема: Замена слов на ссылки в html коде • Форум: Вопросы новичков

Ответов: 4
Просмотров: 319
Попробуйте разбить строку не по "\n", а по "\r\n"
PHP:
скопировать код в буфер обмена
  1. $words = explode("\r\n",$varname); //формируем массив слов
  2. $links = explode("\r\n",$adres); //формируем массив ссылок
skiphog Отправлено: 20 Декабря, 2014 - 18:00:40 • Тема: Разобрать строку на get... • Форум: Вопросы новичков

Ответов: 5
Просмотров: 380
PHP:
скопировать код в буфер обмена
  1. $url = 'http://site.com/?id=11225&name=Vasya&lastName=Pupkin';
  2.  
  3. parse_str(parse_url($url,PHP_URL_QUERY),$arr);
  4.  
  5. var_dump($arr);
skiphog Отправлено: 20 Декабря, 2014 - 10:37:25 • Тема: Выхватить ссылку... • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 41
Т.к. ссылки на Ютубе могут быть и короткие, то это тоже можно учесть.
PHP:
скопировать код в буфер обмена
  1. $url = 'http://www.youtube.com/watch?v=B9yZKnUys2s&index=82&list=WL';
  2. $url2 = 'http://youtu.be/B9yZKnUys2s';
  3. $url3 = 'Какая-то неверная ссылка';
  4.  
  5. /**
  6.  * @param $url string УРЛ для парсинга
  7.  * @return  string|false
  8.  */
  9. function getYouToobe($url) {
  10.   if(preg_match_all('/^http:\/\/www\.youtube\.com\/watch\?.*?v=([a-z0-9_-]+)/i',$url,$matches)) {
  11.     return $matches[1][0];
  12.   }
  13.   if(preg_match_all('/^http:\/\/youtu\.be\/([a-z0-9_-]+)/i',$url,$matches)) {
  14.     return $matches[1][0];
  15.   }
  16.   return false;
  17. }
  18.  
  19. var_dump(getYouToobe($url));  // string 'B9yZKnUys2s'
  20. var_dump(getYouToobe($url2)); // string 'B9yZKnUys2s'
  21. var_dump(getYouToobe($url3)); // false
skiphog Отправлено: 20 Декабря, 2014 - 00:57:10 • Тема: Статические свойства и методы • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 8147
Простыми словами.
--
Статическое свойство для чего?

На примере процедурного стиля:

Задача:
Вам нужно вывести комментарии пользователей к какой-то статье из базы данных или файла или бог знает откуда еще...
И при этом как-то обработать их, на пример, заменить символы в строке типа "Улыбка" или ":-D" на картинку со смайликами.

Пишем простую функцию для замены: (для примера будем использовать strtr()) // синтаксис PHP 5.4+
PHP:
скопировать код в буфер обмена
  1. //Передаем в функцию текст и меняем нужные символы на картинки
  2. function smile($text) {
  3.   $smiles = [
  4.     ":)" => "<img src='smile/1.gif'>",
  5.     ":-D" => "<img src='smile/2.gif'>"
  6.   ]
  7. return strtr($text,$smiles);
  8. }

на выходе мы имеем строку уже с картинками вместо 'Улыбка',':-D'.
Данная функция правильно отрабатывает, НО!
Если вы хотите вывести все 50 комментариев , то вы будете 50 раз вызывать эту функцию и инициализация массива с заменой смайлов, будет происходить так же 50 раз.
Поэтому целесообразно массив объявить статическим, добавив static. Создастся он всего один раз. Ведь мы не меняем его и не передаем в функцию из вне... он всегда один и тот же.
PHP:
скопировать код в буфер обмена
  1. function smile($text) {
  2.   static $smiles = [
  3.     ":)" => "<img src='smile/1.gif'>",
  4.     ":-D" => "<img src='smile/2.gif'>"
  5.   ]
  6. return strtr($text,$smiles);
  7. }


Примерно то же самое и в объектах. Где это используется?
Далеко ходить не буду. Работа с Базой данных и паттерн singleton

Вы описываете свой класс, который подключается к базе данных.
Вы можете его унаследовать, но в каких-то местах, это не получится и вам опять придется соединиться с базой данных.
Что бы не плодить объекты, используем singleton.
На пример, по простому опишем свой класс для создания соединения с БД Mysql с помощью PDO:

PHP:
скопировать код в буфер обмена
  1. class DataBase {
  2.   //простое свойство, где будет храниться объект PDO
  3.   private $db;
  4.   // Вот и статическое свойство, которое создасться всего один раз при вызове объекта и будет хранить в себе сам объект
  5.   private static $instance;
  6.  
  7.   // конструктор сделаем приватным, что бы извне нельзя было его вызвать
  8.   private function __construct() {
  9.     try {
  10.       $this->db = new PDO('mysql:host=host;dbname=db_name;charset=utf-8', 'login', 'password');
  11.       // тут любые настройки, какие хотите
  12.       $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  13.     }catch(PDOException $e) {
  14.       // обрабатываем ошибку
  15.     }
  16.   }
  17.  
  18.   // метод для создания объекта. Здесь проверяется, если объект уже cуществует, то мы его и вернем, если не создан то создадим и вернем.
  19.   static public function  getInstance() {
  20.     if(self::$instance instanceof self) {
  21.       return self::$instance;
  22.     }
  23.     return self::$instance = new self;
  24.   }
  25. }


Для чего это всё? Для того, что бы объект не создавался больше чем один раз, независимо от того, сколько бы раз мы его не попытались создать.
т.е.
PHP:
скопировать код в буфер обмена
  1. //создаем пять раз
  2. // т.к. нам нужно вызвать статический метод, обращаемся к нему через ::
  3. $db1 = DataBase::getInstance();
  4. $db2 = DataBase::getInstance();
  5. $db3 = DataBase::getInstance();
  6. $db4 = DataBase::getInstance();
  7. $db5 = DataBase::getInstance();


Во всех $db* будет находится один и тот же объект

Если бы класс был описан как НЕ singleton, то при создании экземпляра класса, создавалось бы столько объектов, сколько раз его вызвали

PHP:
скопировать код в буфер обмена
  1. $db1 = new DataBase();
  2. $db2 = new DataBase();
  3. $db3 = new DataBase();
  4. $db4 = new DataBase();
  5. $db5 = new DataBase();

Во всех $db* свой объект

--
Теперь о статических методах
Вы решили создать какой-то класс с помощью которого вы хотите как-то очищать входящие данные. Там много всяких, разных метотодов... Улыбка мы создадим такой, но с одним методом. для примера.
Что он делает? Да ничего особенного, метод clearString удаляет все теги,пробелы в строке и возвращает обратно;
PHP:
скопировать код в буфер обмена
  1. class Validator {
  2.        
  3.   public function clearString($string) {
  4.     return trim(strip_tags($string));
  5.   }
  6. }


И вот, наступил момент, когда вам где-то понадобился этот метод. Что нужно сделать что бы он было доступен? Правильно. Создать экземпляр класса Validator и вызвать этот метод.
PHP:
скопировать код в буфер обмена
  1. //строка, в которой нужно очистить все теги
  2. $string =  'Какая-то строка, содержащая <script>alert("ололо")</script>';
  3. //создаем экземпляр класса Validator
  4. $valid = new Validator();
  5. // очищаем строку
  6. $string = $valid->clearString($string);


Что мы сделали? Создали объект ради одного метода.А ведь сам объект может нам и не понадобится никогда. Поэтому сделаем его статическим. Для того, что бы можно было воспользоваться этим методом не создавая сам объект.
Перепишем класс и объявим метод clearString статическим:
PHP:
скопировать код в буфер обмена
  1. class Validator {
  2.  
  3.   static public function clearString($string) {
  4.     return strip_tags(trim($string));
  5.   }
  6. }


И теперь, что бы очистить нашу строку :
PHP:
скопировать код в буфер обмена
  1. $string =  'Какая-то строка, содержащая <script>alert("ололо")</script>';
  2. // вызываем статический метод объекта Validator не создавая сам объект, только уже не через стрелу ->, а через ::
  3. $string = Validator::clearString($string);


Вот в общем то и всё. Может я как-то не совсем понятно объяснил, но постарался передать всё в более простой форме...
спасибо за внимание Улыбка
skiphog Отправлено: 19 Декабря, 2014 - 22:46:36 • Тема: Помогите ребята ПХП • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 68
Если я правильно понял задачу, то решение простое
PHP:
скопировать код в буфер обмена
  1. // какой-то массив (A)
  2. $arrA = array(1,2,3,4,5,-6,7,-8,9,10,11,12,-13,14,15,-16,17,18,-19,20);
  3. // Инициализируем массив, который будет на выходе (B)
  4. $arrB = array(); // PHP 5.4+ => $arrB = [];
  5. foreach($arrA as $key => $value) {
  6.   //проверяем, если индекс четный и значение положительное
  7.   if($key % 2 == 0 && $value > 0) {
  8.     $arrB[] = $value;
  9.   }
  10. }
  11.  
  12. var_dump($arrB);
skiphog Отправлено: 19 Декабря, 2014 - 22:28:49 • Тема: Написать программу, на пхп, помогите пожалуйста друзья! • Форум: Напишите за меня, пожалуйста

Ответов: 6
Просмотров: 122
Одно из решений - можно привести число к строке:
Исправлено с учетом комментария ниже Михась
PHP:
скопировать код в буфер обмена
  1. // какое-то число
  2. $number_in = 1234567890;
  3.  
  4. //приводим int к строке
  5. $number = (string)abs($number_in);
  6.  
  7. // инициализируем счетчик четных чисел
  8. $even = 0;
  9.  
  10. //количество символов в переменной $number
  11. $quantity = strlen($number);
  12.  
  13. //бежим в цикле по цифрам в переменной $number(заведомо зная, что там только цифры)
  14. for($i = 0; $i < $quantity; $i++) {
  15.   //проверяем, если остаток от деления на 2 == 0, то это четное число
  16.   if((int)$number{$i} % 2 == 0) {
  17.     //добавляем +1 к счетчику четных чисел
  18.     $even++;
  19.   }
  20. }
  21.  
  22. //количество нечетных чисел
  23. $odd = $quantity - $even;
  24.  
  25. echo $even; // показываем четные
  26. echo '<br />';
  27. echo $odd; // показываем нечетные
skiphog Отправлено: 19 Декабря, 2014 - 21:22:18 • Тема: кодировка mysql • Форум: Вопросы новичков

Ответов: 2
Просмотров: 172
В какой кодировке база данных хранит данные, абсолютно не имеет никакого значения. Хоть в "китайских иероглифах" храните. т.е. без разницы, что там cp1251_general_ci, что utf-8_general_ci.
Значение имеет только то, какую кодировку вы используете при подключении к базе.
--
Если вы хотите получить данные в кодировке utf-8, то после соединения с БД, установите кодировку соединения с помощью функций:
driver::mysql
PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect ('server','username','password');
  2. mysql_select_db ('nameBase',$db);
  3. mysql_set_charset('utf-8',$db);

driver::mysqli
PHP:
скопировать код в буфер обмена
  1. $mysqli = mysqli_connect("server","username","password","nameBase");
  2.         mysqli_set_charset($mysqli,'utf-8');

driver::PDO
PHP:
скопировать код в буфер обмена
  1. new PDO('mysql:host=server;dbname=nameBase;charset=utf-8','username','password');

--
Указывать кодировку с помощью mysql/i_query('SET NAMES 'utf8'');
как сказано постом выше caballero, не рекомендуется
об этом написано в документации php.net, можете почитать, там все расписано про кодировки и как нужно их указывать при соединении..
--
Идем дальше...
Если используете web-server Apache, можете добаить в файлик .htaccess директивы
PHP:
скопировать код в буфер обмена
  1. DefaultLanguage ru
  2. AddDefaultCharset utf-8
  3. php_value default_charset "utf-8"

и можете смело выкинуть из всех фалов header("Content-Type: text/html; charset=utf-8");
Заголовки всегда будут отдавать charset=utf-8
--
Перекoдируйте все ваши файлы в utf-8!!!
--
В HTML, в тег <html>, добавьте атрибут lang

В хеад добавьте

--
После всех проведенных операций, Ваш проект должен корректно отображаться во всех браузерах в кодировке utf-8 на русском языке.
skiphog Отправлено: 19 Декабря, 2014 - 15:14:40 • Тема: Фон и цыет текста • Форум: Вопросы новичков

Ответов: 4
Просмотров: 147
align='center' тоже можно не указывать, т.к. в теге <th> текст по умолчанию жирный и по центру Улыбка
skiphog Отправлено: 19 Декабря, 2014 - 11:50:00 • Тема: Как скачать файл себе на сервер с другого сайта? • Форум: Вопросы новичков

Ответов: 2
Просмотров: 223
Ваш код рабочий.
--
Если все пути указаны верно, то посмотрите, какое значение в директиве allow_url_fopen

Данная директива отвечает за возможность использовать HTTP и FTP ссылки в большинстве функций, принимающих в качестве параметра имя файла. (В вашем случае - fopen)

Если ini_get('allow_url_fopen') вернул ноль или пустую строку, то соответственно, она выключена.
Такое встречается на бесплатных хостингах.

C помощью ini_set() изменить её нельзя, поэтому, если вы имеете доступ к php.ini, то найдите там эту директиву и выставьте её в значение ON.

Страниц (10): В начало « ... 2 3 4 5 6 7 8 [9] 10 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB