Jump to content
  • 0

Подскажите регулярку, для вырезания скриптов, плиз )


Николя223
 Share

Question

Есть сайт, на нем 40 скриптов... 
Большая часть в head, остальные раскиданы по документу.... 
Хочу все вырезать и закинуть в конец. 

Изначально планировал просто - через simplexml, dom

получается какая то каша во всем документе... причина непонятна.

Через phpQuery - аналогично... либо где то незакрытый тег, либо странная обработка содержимого некотрых скриптов... 

Остается только регулярками... 

Нужно вырезать - одной регуляркой, другой удалить... что то в голову ничего не приходит...  

Осложнено тем, что возможны вставки не обычных скриптов, а template
В дальнейшем я их ещё склеивать в один скрипт буду,... ну тут я что то залип

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Как вариант, чтобы вытащить содержимое между тегами:

 

    /<script[^>]*?>([^<]*?)<\/script\s*>/isg

 

UPD: так внутренние угловые скобки не учитывал

 

    /<script[^>]*?>(.*?)<\/script\s*>/isg

 

P. S. Синтаксис перла

Edited by Igor Schnaider
  • Like 1
Link to comment
Share on other sites

  • 0
А пройтись по всем местам включения скриптов в шаблонах и переместить в нужное место не вариант?

не... не вариант... там в разных модулях... и они динамические - те что в самом теле документа...

ну я и подумал, что вариант через ob_start

 

/<script[^>]*?>(.*?)<\/script\s*>/isg

спс. попробую 

Link to comment
Share on other sites

  • 0

Парни ))  после колдовства все заработало)) @Int - ценная поправка. без неё не все скрипты вырезались ))
Мне кажется быстрее через simpleXML было бы... но они  что то глючили серьезно... буду скорость мерить

963_187333_212.jpg

Link to comment
Share on other sites

  • 0

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

  $out  = preg_replace('/(?![^<]*<\/pre>)[\n\r\t]+/', "\n", $out);  $out  = preg_replace('/ {2,}/', ' ', $out);     $out  = preg_replace('/>[\n]+/', '>', $out);

и в догонку, когда склеиваю и сжимаю стили - приходится руками относительные пути переводить в абсолютные, есть какие нибудь идеи, как все это обработать? 
пока что только вижу анализ всего что между  url(  и ), url( и ).  но возможны варианты, когда без url,, хм, может на расширения опираться 

как доделаю, возможно сюда модуль запулю на тесты

Link to comment
Share on other sites

  • 0

"\n"

с чистой совестью можно заменить на констату PHP_EOL, если конечно не требуется конкретно знак новой строки

 

и кстати preg_replace может принимать массивы в качестве аргументов, что избавит от множественного вызова функции.

UPD кстати тут вспомнил под MODX есть компонент, если не ошибаюсь MinifyX который как раз все это дело делает и умеет. Можешь качнуть и проанализировать код, может что полезное найдешь.

  • Like 1
Link to comment
Share on other sites

  • 0
PHP_EOL

спс... я вкурсе про константу, просто тут проблеммы другого характера)) ок - поставлю.

 

 

и кстати preg_replace

спс)) я вкурсе, просто для порядка по шагам расписал

 

MinifyX

Я пользуюсь другим Minify для этого... путем анализа понял что он работает только с закавыченными... и то не со всеми, 

спс)) качну этот, попробую может он получше 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy