PCRE-выражение не работает на сервере, но пашет на клиенте

KOLANICH

Новичок

KOLANICH

Новичок
потому, что выражение я составил, но на сервере оно не работает
а через javascript работает
 

freeek

Новичок
если возвращает 0, значит не видит шаблона,

что нужно им выдернуть?
 

Вурдалак

Продвинутый новичок
Автор оригинала: KOLANICH
с m, i и s тоже не пашет
— ты кастуешь? Покажи свой PHP-код.

Автор оригинала: freeek
если возвращает 0, значит не видит шаблона
— 0 возвращает, если не видит подстроки, подходящей под шаблон.
 

dimagolov

Новичок
мне кажется его проблема в том, что в переносе строк у него не только '\n', хотя можно только гадать.
 

freeek

Новичок
для написанияя регулярок лучше использовать The Regex Coach

хотя если не знать синтаксиса, это мало поможет
 

KOLANICH

Новичок
Код:
// ==UserScript==
// @name          Depositfiles download timer remover and download slot getter
// @namespace     [url]http://depositfiles.com[/url]
// @description   (v1.62) Gets a download slot for you and lets you download right away without captchas or timers
// @include       [url]http://*.depositfiles.com/*/files/*[/url]
// @include       [url]http://depositfiles.com/*/files/*[/url]
// @include       [url]http://depositfiles.com/files/*[/url]
// @include       [url]http://*.depositfiles.com/files/*[/url]
// ==/UserScript==
Код:
// ==UserScript==
// @name           Brak reklam w menu ogame
// @namespace      Brak reklam w menu ogame
// @description    Kasuje oficerów i komandora z lewego menu w ogame by sledziu1
// ==/UserScript==
Код:
// ==UserScript==
// @name           w3schools LargeView
// @namespace      redleafong
// @description    Larger content area for w3schools.com
// @include        [url]http://www.w3schools.com/*[/url]
// ==/UserScript==
Код:
// ==UserScript==
// @name          DISCONTINUED Facebook photo album keyboard navigation
// @author        Mattias Blom
// @namespace     MattiasBlom
// @description   DISCONTINUED DISCONTINUED DISCONTINUED Makes facebook photo albums keyboard navigable: n/p for next and previous pages, c for jumping to the comment box and t for showing/hiding the tagging box. (Conflicts with "Find As You Type" in Firefox)
// @include       [url]http://*.facebook.com/photo.php*[/url]
// ==/UserScript==
должно выдирать подобные конструкции
 

freeek

Новичок
PHP:
  $text = '// ==UserScript==
// @name          Depositfiles download timer remover and download slot getter
// @namespace     [url]http://depositfiles.com[/url]
// @description   (v1.62) Gets a download slot for you and lets you download right away without captchas or timers
// @include       [url]http://*.depositfiles.com/*/files/*[/url]
// @include       [url]http://depositfiles.com/*/files/*[/url]
// @include       [url]http://depositfiles.com/files/*[/url]
// @include       [url]http://*.depositfiles.com/files/*[/url]
// ==/UserScript==';

  preg_match( '%//[^=]*==UserScript==[^/]+(?://\s+@\w+\s+[^\n]*\n)+//[^=]*==/UserScript==%isU', $text, $match );
  echo '<pre>';
  print_r( $match );
  echo '</pre>';
попробуй так
 

dimagolov

Новичок
freeek, а зачем ты слеши экранировал? чтобы затуманить смысл регулярки?
 

freeek

Новичок
а х.з. привычка

согласен, в этом случае, этого можно было не делать
 

KOLANICH

Новичок
немного изменил твоё выражение
PHP:
$rx='/\/[\/*] *==UserScript==[^\/]+(?:\/\/\s+@\w+\s+[^\n]*\n)+\/\/[^=]*==\/UserScript==(\*/)?/isU';
в конструкторе опять всё верно,в PHP же
Warning: preg_match() [function.preg-match]: Unknown modifier '[' in /home/kolanich/public_html/userjsencode.php on line 30
 

dimagolov

Новичок
KOLANICH, да ты гонишь. 100% что первым символом шаблона у тебя не %.

-~{}~ 26.02.10 14:47:

немного изменил твоё выражение
тебе что-то модифицировать противопоказано пока что.
 

freeek

Новичок
не знаю, если обратить внимание, никакого модификатора [ не указано

код рабочий, проверено, ради интереса на 4.4.9, 5.2.4, 5.3

так что смотри у себя

-~{}~ 26.02.10 21:50:

вот как раз таки тот случай по всей видимости, когда надо экранировать слеши, потому что возможно у меня привычка использовать %%, у кого то ~~, а обычно это //
 

KOLANICH

Новичок
KOLANICH, да ты гонишь. 100% что первым символом шаблона у тебя не %.
какой символ-ограничитель роли не играет
PHP:
$rx='/\/[\/*] *==UserScript==[^\/]+(?:\/\/\s+@\w+\s+[^\n]*\n)+\/\/[^=]*==\/UserScript==(\*/)?/isU';

//$rx='%//[^=]*==UserScript==[^/]+(?://\s+@\w+\s+[^\n]*\n)+//[^=]*==/UserScript==%isU';
слеши заэкранированы
 
Сверху