PHP.SU

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

Страниц (1): [1]

> Найдено сообщений: 11
zenn Отправлено: 27 Марта, 2013 - 17:09:47 • Тема: Регулярное выражение - запись 2х вхождений • Форум: Программирование на PHP

Ответов: 2
Просмотров: 254
esterio пишет:
http://www.php.net/manual/ru/regexp.reference.recursive.php

Гениально ... хорошо осознавать то, что есть велосипедчики большие чем я....
zenn Отправлено: 27 Марта, 2013 - 14:21:40 • Тема: Регулярное выражение - запись 2х вхождений • Форум: Программирование на PHP

Ответов: 2
Просмотров: 254
Я велосипедист, поэтому - не бейте ногами.
Пишу некую простую модель шаблонизатора для небольшого сайта-визитки, все хорошо, но возникла потребность обрабатывать условия в теле шаблона, а не городить сложные обработчики в коде.
Сама задача такова. Припустим есть шаблон вида:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. DOnt give fuck data
  3. {$if rule} some data
  4.                 again data
  5.                 with new line
  6.                 {/$if}
  7.                 this data also
  8.                 dont give a fuck
  9.                 {$if second_rule}
  10.                 sdfsdf
  11.                 ddd
  12.                 {/$if}
  13.  

Мне необходимо найти следующие вхождения:
1 - правило в операторе условия if(Регулярка выглядит примерно так : /{\$if (.*?)}/ или /{\$if (\w+)}/) и
2 - содержимое условия: (регулярка опять же где то такая: /}(.*){\/\$if})
Однако, при сборе всего воедино:
PHP:
скопировать код в буфер обмена
  1.  
  2. $a = 'DOnt give fuck data
  3. {$if rule} some data
  4.                 again data
  5.                 with new line
  6.                 {/$if}
  7.                 this data also
  8.                 dont give a fuck
  9.                 {$if second_rule}
  10.                 sdfsdf
  11.                 ddd
  12.                 {/$if}
  13.                 ';
  14. preg_match_all('/{\$if (.*?)}(.*){\/\$if}/', $a, $matches);
  15. var_dump($matches);
  16.  
  17.  

Массив $matches получается пустым:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. array(3) {
  4.   [0]=>
  5.   array(0) {
  6.   }
  7.   [1]=>
  8.   array(0) {
  9.   }
  10.   [2]=>
  11.   array(0) {
  12.   }
  13. }
  14.  

При вытаскивании лишь правила из массива - все более чем замечательно:
PHP:
скопировать код в буфер обмена
  1.  
  2. $a = 'DOnt give fuck data
  3. {$if rule} some data
  4.                 again data
  5.                 with new line
  6.                 {/$if}
  7.                 this data also
  8.                 dont give a fuck
  9.                 {$if second_rule}
  10.                 sdfsdf
  11.                 ddd
  12.                 {/$if}
  13.                 ';
  14. preg_match_all('/{\$if (.*?)}/', $a, $matches);
  15. var_dump($matches);
  16.  

резалт:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. array(2) {
  3.   [0]=>
  4.   array(2) {
  5.     [0]=>
  6.     string(10) "{$if rule}"
  7.     [1]=>
  8.     string(17) "{$if second_rule}"
  9.   }
  10.   [1]=>
  11.   array(2) {
  12.     [0]=>
  13.     string(4) "rule"
  14.     [1]=>
  15.     string(11) "second_rule"
  16.   }
  17. }
  18.  

Так вот, как же все же мне вытащить содержимое подобного псевдо-условия в шаблоне?
(Добавление)
Дописал сам, забыл указать модификатор /s, читало с*ка по-строково )
Финальный вариант регулярки(может кому то понадобиться):
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/{\$if (.+?)}(.*?){\/\$if}/s', $a, $matches);
zenn Отправлено: 27 Марта, 2013 - 14:09:49 • Тема: Как можно сжать размер страницы? • Форум: Программирование на PHP

Ответов: 4
Просмотров: 340
Как вариант, выше говорили gzip + удаление двойных пробелов и переноса строк. С gzip пример дали, вот вам для переноса строк и пробелов:
PHP:
скопировать код в буфер обмена
  1.  
  2.         function compress($html)
  3.         {
  4.                 return preg_replace('/[\s]{2,}/', ' ', str_replace(array("\n", "\r", "\t"), '', $html));
  5.         }
  6.  
zenn Отправлено: 19 Февраля, 2012 - 14:43:09 • Тема: ZipArchive - архив в архиве(addString) • Форум: Вопросы новичков

Ответов: 4
Просмотров: 217
на правах ап-а Ниндзя
zenn Отправлено: 18 Февраля, 2012 - 14:21:10 • Тема: ZipArchive - архив в архиве(addString) • Форум: Вопросы новичков

Ответов: 4
Просмотров: 217
Неужели никто с таким не стыкался? А?!
zenn Отправлено: 18 Февраля, 2012 - 11:00:51 • Тема: ZipArchive - архив в архиве(addString) • Форум: Вопросы новичков

Ответов: 4
Просмотров: 217
Ezi пишет:
А если распаковать временно архив 1, открыть архив 2, записать в него данные, закрыт архив 2, запаковать в архив 1?

Не хотелось бы проделывать такую операцию, т.к нужно лишь добавить пару текстовых файлов с определенным хешем ...
zenn Отправлено: 18 Февраля, 2012 - 01:34:10 • Тема: ZipArchive - архив в архиве(addString) • Форум: Вопросы новичков

Ответов: 4
Просмотров: 217
Собственно такая история, нужно добавить файл в архив.
Архив такой архитектуры:
arcive1.zip/folder1/folder2/arch ive2.zip
arcive2.zip находится в archive1.zip, нужно создать текстовый файл в archive2.zip
Как пытаюсь я:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $zip = new ZipArchive;
  3.  
  4. $try = $zip->open("archive1.zip");
  5. if($try) {
  6. $zip->open("folder1/folder2/arcive2.zip");
  7.  
  8. $zip->addFromString("file.txt", "Я твой дом труба шатал");
  9. }
  10. $zip->close();
  11.  
  12.  

Кто чем помогёт? Не понял
zenn Отправлено: 16 Февраля, 2012 - 17:43:47 • Тема: Рекодинг строки в адекватный вид • Форум: Вопросы новичков

Ответов: 2
Просмотров: 409
DlTA пишет:
PHP:
скопировать код в буфер обмена
  1. $data = "Евпaтории обустроят еще три коммунaльных пля&#x0436";
  2.  
  3.         echo html_entity_decode($data);

> Евпaтории обустроят еще три коммунaльных пляж

Сяп, to close.
zenn Отправлено: 16 Февраля, 2012 - 16:36:20 • Тема: Рекодинг строки в адекватный вид • Форум: Вопросы новичков

Ответов: 2
Просмотров: 409
Делаю парсер для определенного сайта, однако сайт-жертва содержит текст в непонятной (для меня) кодировке.
Гугл подсказывает что нужно двигаться в сторону ASCII однако это не очень помогло.
Пример текста:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. B Евпaтории обустроят еще три коммунaльных пляжa
  3.  

В браузере выглядит как:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. В Евпатории в ближайшие несколько лет будут обустроены еще как минимум три коммунальных пляжа.
  3.  

Кто подскажет, как средствами php сделать данное преобразование в текст? Не понял
zenn Отправлено: 16 Февраля, 2012 - 16:26:31 • Тема: Microteam Power Captcha v1.0 • Форум: Пользовательские функции

Ответов: 7
Просмотров: 930
Такие капчи ломаются за 10 минут работы(шрифт + сопоставление с эталоном точечным)....
zenn Отправлено: 13 Августа, 2010 - 22:08:17 • Тема: help me] Регистрация+вход. • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1227
По коду - не видно как задана $go. Если это $_POST[submit] - мб трабл с русиком.

По офтопу:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. setcookie("nick", $nick1, time() + 3600*24*365);
  3. setcookie("pass", $pass1, time() + 3600*24*365);
  4.  

Вот они - авторы в будущем обманутых пользователей и ворованных кукисов.
Ни в коем случае не отдавайте пользователю пароль в куке, пусть то даже будет md5/sha1 хеш.
Банальная система существует намного проще - добавить 1 колонку в БД под запись ip адреса авторизовашегося, а куки - писать sha/md5 от этого ип-а + логин. Намного серьезней связка.
Пример:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $ip = $_SERVER[REMOTE_ADDR];
  3.  
  4. if(!isset($cookie[ip])) {
  5.  
  6. // обработка с назначением в куки sha1($ip) + salt и вставка в базу последнего ип-а юзверя
  7. } else {
  8. // проверка куки ип-а + логина на валидность(select с базы ип-а, преобразовани в хеш+соль) и сравнение == .
  9. }
  10.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB