Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrazenia regularne <link rel=stylesheet
Forum PHP.pl > Forum > PHP
thelete
witam
mam problem z wyrazeniami regularnymi (jak zwykle)
w zmiennej $strona mam zrodelko sciagnietej strony
chce z tego zrodla wyciac sciezke do styli znajdujaca sie w tagu
<link rel....>
lub
<style type="text/css">
@import url("sciezka do css")
</style>

nie moge dojsc do ladu ze stworzeniem odpowiedniego wyrazenia regularnego
dla takiego hieroglifu
moze mi ktos w tym pomoc?




doszedlem z wielkimi oporami do czego takiego

  1. <link\b.+?href=(.?)*\b.+rel=['"]stylesheet['"].+?>


i dostaje calego taga <link>

teraz jak z tego wycignac to co za href= questionmark.gif?
i czy to co wyrzezbilem jest w ogole poprawne?

ok doszedlem do czegos takiego

  1. <link\\b.+?href=[\"|\']?([^ \"\\']*)[\"|\']*\\b.+rel=['\"]stylesheet['\"].+?>


wedlug RegexBuddy to niby dziala ale....
tylko na
  1. <link href="/style.css" rel="stylesheet" type="text/css">


a na tym juz nie
  1. <link rel="stylesheet" href="/style.css" type="text/css">



sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif
bendi
No to trzeba niestety 2 regulki napisac, albo jedną z alternatywa:>
Kod
/<link(?:(?:.*?stylesheet.*?href=("|')?(.*?)(?(1)\\1| ))|(?:.*?href=("|')?(.*?)(?(1)\\1| )stylesheet.*?))/

Wynik będzie jako pierwsze lub drugie backreference.
thelete
Cytat(bendi @ 8.12.2006, 12:32:10 ) *
No to trzeba niestety 2 regulki napisac, albo jedną z alternatywa:>
Kod
/<link(?:(?:.*?stylesheet.*?href=("|')?(.*?)(?(1)\\1| ))|(?:.*?href=("|')?(.*?)(?(1)\\1| )stylesheet.*?))/

Wynik będzie jako pierwsze lub drugie backreference.



chyba jdnak nie do konca;)

  1. <?php
  2. preg_match("/<link(?:(?:.*?stylesheet.*?href=("|')?(.*?)(?(1)1| ))|(?:.*?href=("|')?(.*?)(?(1)1| )stylesheet.*?))/is", $test, $regs) ;
  3. echo $regs[0];
  4. ?>


w $regs[0] mam

  1. <!-- function generate_address( username ) { var domain = "aardmud.org"; var atsign = "@"; var addr = username + atsign + domain; document.write( "<" + "a" + " " + "href="


to jest czesc zawartosci zmienne $test lecz nie ta czesc ktora mnie interesuje...
kiedy wywale /s z konca zmienna $reg[0] jest pusta
sadsmiley02.gif

ok doszedlem do tego ze trzeba spacje wytrasnac winksmiley.jpg
i wyglada to tak ale...
  1. <?php
  2. preg_match("/<link(?:(?:.*?stylesheet.*?href=("|')?(.*?)(?(1)1|))|(?:.*?href=("|')?(.*?)(?(1)1|)stylesheet.*?)).*>/i", $test, $regs) ;
  3. while(list ($kk,$vv) = each($regs)){
  4.  
  5. echo $kk.' - '.$vv.'<br>';
  6. }
  7. ?>


zwraca mi:
$regs[4] = 'style.css" rel="'

okey

  1. <?php
  2. if (preg_match('/('|")([^('|")]+).css('|")/i', $test, $regs)) {
  3.  echo $regs[0];
  4. } else {
  5.  echo "hjuston łi hef e problem";
  6. }
  7. ?>


dziala

ps. dzieki Insane
bendi
Hmm do mojej regułki faktycznie zakradły się błędy - nie miałem czasu jej sprwadzić wczoraj, ale tutaj jest poprawnka:
  1. <?php
  2.  
  3. $s = <<<EOT
  4. <head>
  5. <!-- lang and bots stuff -->
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta http-equiv="content-language" content="pl" />
  8. <meta name="revisit-after" content="7 days" />
  9.  
  10. <!-- looks-->
  11. <link rel="shortcut icon" href="/resources/gfx/favicon.ico" />
  12.  
  13. <link href="/resources/style/main_new.css?ead6d67f0b3740a1da986e34b551e716eb81140a" type="text/css" rel="stylesheet" />
  14. <link rel="stylesheet" href="/resources/style/list.css?ead6d67f0b3740a1da986e34b551e716eb81140a" type="text/css" />
  15.  
  16. <!--[if lte IE 6]>
  17. <style type="text/css">
  18. .bg {
  19. background-image: none;
  20. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/resources/gfx/translucent.png', sizingMethod='scale');
  21. }
  22. #bgLayer {
  23. background-image: none;
  24. filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/resources/gfx/translucentBlack.png', sizingMethod='scale');
  25. }
  26. </style>
  27. <link rel="stylesheet" type="text/css" href="/resources/style/lte_IE_6.css?ead6d67f0b3740a1da986e34b551e716eb81140a" />
  28. <![endif]-->
  29.  
  30. <!--[if lte IE 7]>
  31. <link rel="stylesheet" type="text/css" href="/resources/style/lte_IE_7.css?ead6d67f0b3740a1da986e34b551e716eb81140a" />
  32. <link rel="stylesheet" type="text/css" href="/resources/style/list_IE_fix.css?ead6d67f0b3740a1da986e34b551e716eb81140a" />
  33. <![endif]-->
  34.  
  35. <style type="text/css">
  36. @media print{
  37. #left, #right{display: none;}
  38. #content{height: 100%;overflow: inherit;}
  39. }
  40. </style>
  41.  
  42. <!-- behaviour -->
  43. <script type="text/javascript">c={HTTP_PATH:"http://bed",CURRENT_LANG:"pl"};function showInsideTooltip(){};_img = new Image(); _img.src=c.HTTP_PATH + '/resources/gfx/loading.gif';</script>
  44.  
  45. <script type="text/javascript" src="/resources/script/advAJAX.js?ead6d67f0b3740a1da986e34b551e716eb81140a"></script>
  46. <script type="text/javascript" src="/resources/script/globals.js?ead6d67f0b3740a1da986e34b551e716eb81140a"></script>
  47. <script type="text/javascript" src="/resources/script/cookie.js?ead6d67f0b3740a1da986e34b551e716eb81140a"></script>
  48. <script type="text/javascript" src="/resources/script/InsideTooltip.js?ead6d67f0b3740a1da986e34b551e716eb81140a"></script>
  49.  
  50. <script type="text/javascript" src="/resources/script/script.js?ead6d67f0b3740a1da986e34b551e716eb81140a"></script>
  51. <script type="text/javascript" src="/resources/script/menu_titles_pl.js?ead6d67f0b3740a1da986e34b551e716eb81140a"></script>
  52. </head>
  53. EOT;
  54.  
  55. $reg = '/<link(?:(?:.*?stylesheet.*?href=("|')?(.*?)(?(1)1| ))|(?:.*?href=("|')?(.*?)(?(3)3| ).*?stylesheet))/';
  56.  
  57. preg_match_all ( $reg, $s, $m );
  58.  
  59. print_r( $m );
  60.  
  61. ?>


Daje:
Kod
marek@ubuntu:~$ php bla.php
Array
(
    [0] => Array
        (
            [0] => <link href="/resources/style/main_new.css?ead6d67f0b3740a1da986e34b551e716eb81140a" type="text/css" rel="stylesheet
            [1] => <link rel="stylesheet" href="/resources/style/list.css?ead6d67f0b3740a1da986e34b551e716eb81140a"
            [2] => <link rel="stylesheet" type="text/css" href="/resources/style/lte_IE_6.css?ead6d67f0b3740a1da986e34b551e716eb81140a"
            [3] => <link rel="stylesheet" type="text/css" href="/resources/style/lte_IE_7.css?ead6d67f0b3740a1da986e34b551e716eb81140a"
            [4] => <link rel="stylesheet" type="text/css" href="/resources/style/list_IE_fix.css?ead6d67f0b3740a1da986e34b551e716eb81140a"
        )

    [1] => Array
        (
            [0] =>
            [1] => "
            [2] => "
            [3] => "
            [4] => "
        )

    [2] => Array
        (
            [0] =>
            [1] => /resources/style/list.css?ead6d67f0b3740a1da986e34b551e716eb81140a
            [2] => /resources/style/lte_IE_6.css?ead6d67f0b3740a1da986e34b551e716eb81140a
            [3] => /resources/style/lte_IE_7.css?ead6d67f0b3740a1da986e34b551e716eb81140a
            [4] => /resources/style/list_IE_fix.css?ead6d67f0b3740a1da986e34b551e716eb81140a
        )

    [3] => Array
        (
            [0] => "
            [1] =>
            [2] =>
            [3] =>
            [4] =>
        )

    [4] => Array
        (
            [0] => /resources/style/main_new.css?ead6d67f0b3740a1da986e34b551e716eb81140a
            [1] =>
            [2] =>
            [3] =>
            [4] =>
        )

)

Czyli wsio działa jak należy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.