PHP.SU

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

Страниц (5): [1] 2 3 4 5 »

> Найдено сообщений: 72
duhon Отправлено: 24 Ноября, 2014 - 19:45:58 • Тема: Картинка в ссылке, жадность • Форум: Регулярные выражения

Ответов: 3
Просмотров: 361
я знаю, и что? ты показывал скрин с браузера (насколько я понял) а вот есть ли перевод строк у тебя в переменной которую ты парсиш под вопросом (чаще всего нету).
Если хочешь дай небольшой пример текста который реально попадает в регулярку, и я точно проверю почему не работала регулярка

Добавил
смотри
регулярка "/<a.*?>.*?<img.*?>.*?<\/a>/" в которой нету модификатора s

<a ...>\n<img ..>\n</a> не работает
<a ...>текст</a>\n<a ...>\n<img ..>\n</a> не работает

<a ...><img ..></a> работает
<a ...>текст</a><a ...><img ..></a> работает и точка пожирает все подрят, ее никто не остановит кроме img (а если убрать нежадность то ее и img не остановит)

а я предложил тебе умерить апетит точки например так <a[^>]*>[^<]*<img[^>]*>[^<]*<\/a>
<a ...><img ..></a> работает
<a ...>текст</a><a ...><img ..></a> работает (совпадает только <a ...><img ..></a>)
duhon Отправлено: 24 Ноября, 2014 - 19:43:19 • Тема: Отрезать первый div • Форум: Регулярные выражения

Ответов: 2
Просмотров: 508
однозначно не регуляркой, только парсингом дума. Ищи в гугле "parser dom php".

P.S. для интузиастов могу предложить рекурсивные регулярки, они справяться
duhon Отправлено: 24 Ноября, 2014 - 19:37:59 • Тема: Картинка в ссылке, жадность • Форум: Регулярные выражения

Ответов: 3
Просмотров: 361
simple dom html точно будет надежней и правильней такое обрабатывать
а регулярка не работала из за этого .*? даже не жадный он кушает все подряд
если заменить хотябы на [^>]*
duhon Отправлено: 24 Ноября, 2014 - 19:31:45 • Тема: Выбрать ссылки, в конце которых нет тега • Форум: Регулярные выражения

Ответов: 1
Просмотров: 223
Все дело в том что ты мыслиш наоборот Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. preg_match_all('~http://(?:\S+(?=\[/img\])|\S+)~', "[img]http://site.com[/img]\nhttp://site2.com", $matches);
  3. print_r($matches);
  4. //return
  5. (
  6.     [0] => Array
  7.         (
  8.             [0] => http://site.com
  9.             [1] => http://site2.com
  10.         )
  11.  
  12. )
  13.  
duhon Отправлено: 21 Октября, 2014 - 12:36:41 • Тема: Nginx закешировал static • Форум: Apache и другие веб-серверы

Ответов: 6
Просмотров: 1031
красавчик, я догадывался что проблема в примантированном диске vboxsf, но что бы так глючило.

для остальных кто будет читать тему, описание проблемы vagrant тут
http://www[dot]mabishu[dot]com/blog/2013[dot][dot][dot]grant-on-vboxsf/
duhon Отправлено: 21 Октября, 2014 - 10:24:27 • Тема: Nginx закешировал static • Форум: Apache и другие веб-серверы

Ответов: 6
Просмотров: 1031
root@vagrant:/home/vagrant# cat /var/www/chat.loc/html/test.html
33333333333333333333333333

но при запросе из браузера выдает одинички

tcpdump -i eth1 -A -nn port 80
Спойлер (Отобразить)
duhon Отправлено: 20 Октября, 2014 - 17:23:55 • Тема: Nginx закешировал static • Форум: Apache и другие веб-серверы

Ответов: 6
Просмотров: 1031
ну проблема описанная в сылке почти полностью другая. У него пустота вместо статики, и он вообще хочет ее кешировать. Я же сейчас не хочу ничего кэшить, и как минимум разобраться почему так, ведь нигде неописано что должно что то кэшироваться.

кстате header Last-Modified возращает правильную информацию о дате изменения.
пример ответа
Спойлер (Отобразить)


З.Ы. я попробывал варианты описаные там, резльтата нету. (я рестартовал nginx)
duhon Отправлено: 20 Октября, 2014 - 13:43:13 • Тема: Nginx закешировал static • Форум: Apache и другие веб-серверы

Ответов: 6
Просмотров: 1031
в виртуалке поднял ubuntu 14, из пакетов nginx, php, php-fpm
все работает хорошо, с php

но со статикой что то непонятное.
создаю index.html, пишу туда пару букв, запрашиваю этот файл через браузер, все хорошо.
меняю файл, опять запрашиваю его через браузер (в хроме отключил кеширование) получаю старые (необновленные) данные.
я отчетливо вижу что http статус 200 что значит что это не кеш браузера.
подозреваю что nginx гдето что то закешировал.

еще заметил такой прикол.
текст 1111111111 в браузере 1111111111
изменил текст на 1111111111222 в браузере 1111111111���
изменил текст на 2222 в браузере 1111
(тоесть механизм который кеширует. знает что тект уже поменялся, но всреавно выводит старые данные)

Помогите разобраться где ошибка, почему кешиться данные.
З.Ы. если не nginx то кто еще может такое делать? настройка php-fpm дефолтная

nginx.conf
Спойлер (Отобразить)


chat
Спойлер (Отобразить)


debug nginx
Спойлер (Отобразить)
duhon Отправлено: 03 Июля, 2014 - 16:31:25 • Тема: Сокрытие персональных данных • Форум: Регулярные выражения

Ответов: 6
Просмотров: 731
PHP:
скопировать код в буфер обмена
  1. echo preg_replace('/(?!^.|.$|.?\.|.{0,2}@|(?<=@)|(?<=@.))./u', '*', 'example@example.com.ua');
  2. //result e****le@ex****e.**m.*a


если количество звоздочек не должно совпадать с количеством спрятанных символов то можно так

PHP:
скопировать код в буфер обмена
  1. echo preg_replace('/(?<=^.)[^@]*([^@]{2}@[^.]{2})[^.]*(.\.).*(?=.$)/u','*$1*$2*','example@example.com');
  2. // e*le@ex*e.*m
duhon Отправлено: 02 Июня, 2014 - 16:29:46 • Тема: Заменить ссылки и вырезать список • Форум: XML и его обработка

Ответов: 6
Просмотров: 3409
если ключевые слова проблемы "html,сложно,regex" то нужно загуглить "php html parser"
а уже после, простые задачи доработать с помощью регулярок. Исключение если это принципиально или жесткое условие.
duhon Отправлено: 14 Мая, 2014 - 18:53:45 • Тема: Есть два подобных текста, взять из них примерно одинаковое значение • Форум: Регулярные выражения

Ответов: 5
Просмотров: 402
PHP:
скопировать код в буфер обмена
  1. $regex = '~(?(DEFINE)(?<s>\s|<br\s*/?>|\R)(?<i>(?-i:[А-ЯЁ]\.\s*){2})(?<n>(?-i:[А-ЯЁ][а-яё]+)))(?:научный(?&s))?руководитель(?&s)*.*?((?&i)(?&n)|(?&n)\s+(?&i))(?&s)*~uis';

пробуй
duhon Отправлено: 14 Мая, 2014 - 17:33:18 • Тема: регулярка • Форум: Регулярные выражения

Ответов: 1
Просмотров: 166
подходит?

CODE (htmlphp):
скопировать код в буфер обмена
  1. ^/news/(?:(?:([^/?]+)/)?page(\d+)/$)?

(Добавление)
или так?
$regex ='~^/news/(?Недовольство, огорчение?!page)([^/?]+)/)?(?:page(\d+)/)?$~m';
duhon Отправлено: 29 Апреля, 2014 - 14:28:35 • Тема: Выборка тега • Форум: Регулярные выражения

Ответов: 1
Просмотров: 179
честно, не прочитал вашу регулярку, просто за 3 минутки накидал вариант, что бы увидить в чем проблема. Дайте свой пример входящих данных.
PHP:
скопировать код в буфер обмена
  1. echo preg_replace('/\B#(?:([\'"]).*\1|\S+)/', '<$0>', 'текст url=http://test.ru/test.php#interest. Теперь пойдут теги #ТЕГ и #"что угодно" и #\'что угодно\'.');

результат
PHP:
скопировать код в буфер обмена
  1. текст url=http://test.ru/test.php#interest. Теперь пойдут теги <#ТЕГ> и <#"что угодно"> и <#'что угодно'>.


P.S. просмотрел вашу регулярку, не удержался и очистил ее от "шлака"
CODE (htmlphp):
скопировать код в буфер обмена
  1. '~#(?:([^"\'\s][^,.!?\s]+)|"([^"]+)"|\'([^\']+)\'|(\d+))~'
duhon Отправлено: 22 Апреля, 2014 - 17:06:17 • Тема: подскажите с регулярным выражением • Форум: Другие языки программирования

Ответов: 1
Просмотров: 3929
java незнаю, но гипотетически использовать проще регулярку, и while
CODE (htmlphp):
скопировать код в буфер обмена
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3.  
  4. public class RegexMatches
  5. {
  6.     private static final String REGEX = "(\\d{1,2}):(\\d{1,2})";
  7.     private static final String INPUT = "2:4 (1:0, 2:0, 2:0)";
  8.  
  9.     public static void main( String args[] ){
  10.        Pattern p = Pattern.compile(REGEX);
  11.        Matcher m = p.matcher(INPUT);
  12.        int count = 0;
  13.  
  14.        while(m.find()) {
  15.          count++;
  16.          System.out.println("Match number "+count);
  17.          System.out.println("1--> "+m.group(1));
  18.          System.out.println("2--> "+m.group(2));
  19.       }
  20.    }
  21. }

Результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Match number 1
  2. 1--> 2
  3. 2--> 4
  4. Match number 2
  5. 1--> 1
  6. 2--> 0
  7. Match number 3
  8. 1--> 2
  9. 2--> 0
  10. Match number 4
  11. 1--> 2
  12. 2--> 0


А поповоду букв вопрос непонятен.
duhon Отправлено: 22 Апреля, 2014 - 15:51:14 • Тема: Хэш тег • Форум: Регулярные выражения

Ответов: 13
Просмотров: 1167
можно просто
PHP:
скопировать код в буфер обмена
  1. //Output for => 5.3.4
  2. $var = array(
  3.         '#tag',
  4.         'text #tag text',
  5.         'text #tag',
  6.         'text#tag',
  7. );
  8. $res = preg_replace('/\B#(\S{1,24}+)/u', '#<$1>' , $var);
  9. print_r($res);
  10. /*Array
  11. (
  12.     [0] => #<tag>
  13.     [1] => text #<tag> text
  14.     [2] => text #<tag>
  15.     [3] => text#tag
  16. )*/
  17. echo preg_replace('/\B#(\S{1,24}+)/u', '<$0>' , '#111 тапинамбур#222 #333 #444'); // <#111> тапинамбур#222 <#333> <#444>


P.S. как бонус срабатывает якорное ускорение работы регулярки
P.S.S если php старая то можно и так '/(?<!\S)#\S{1,24}+/u' (но лучше поменять php версию)

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB