Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenia regularne
qba10
post
Post #1





Grupa: Zarejestrowani
Postów: 264
Pomógł: 20
Dołączył: 19.08.2007
Skąd: Bryńsk k. Lidzbarka Welskiego (nie mylić z Warmińskim)

Ostrzeżenie: (0%)
-----


Witam
W wyrażeniach regularnych mam minimalne doświadczenie.
Chciałbym osiągnąć coś takiego:
za znacznik <link> który może mieć różną formę ale musi zawierać href zmienić wartość href dodając jeden folder.
Przykład:

z czegoś takiego:
  1. <link rel="stylesheet" type="text/css" href="css/style.css" />

zropić coś takiego:
  1. <link rel="stylesheet" type="text/css" href="folder/css/style.css" />

I teraz zaczyna się problem.
Ponieważ <link> nie musi być tak zbudowany jak powyżej.
Może wyglądać tak:
  1. <link rel="stylesheet" href="folder/css/style.css" type="text/css" >


I jak zrobić coś takiego.
Doszedłem do czegoś takiego:
  1. <?php
  2. $tpl=preg_replace('(<link (.+?) href="(.*?)"(.+?) >)', '<link $1 href="folder/$2"  $3 >', $tpl);
  3. ?>


Ale niestety to nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
-webdevil-
post
Post #2





Goście







spróbuj takie wyrażenie:
  1. <?php
  2. $tpl=preg_replace('<link(.+)href="([^"]*?)"([^>]*)>', '<link $1 href="folder/$2"  $3 >, $tpl);
  3. ?>


nie testowane ale coś w tym stylu
Go to the top of the page
+Quote Post
-gox-
post
Post #3





Goście







urodzilem cos takiego:

'#<link[^>]+href=["\']?([a-z0-9/\.]+)[/"\' >]+#is'

dziala... ale gotowca nie dam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
qba10
post
Post #4





Grupa: Zarejestrowani
Postów: 264
Pomógł: 20
Dołączył: 19.08.2007
Skąd: Bryńsk k. Lidzbarka Welskiego (nie mylić z Warmińskim)

Ostrzeżenie: (0%)
-----


No to wymodziłem coś takiego, ale Warning wyskakuje
  1. <?php
  2. $tpl=preg_replace("<link[^>]+href=[\"']?([a-z0-9/.]+)[/\"' >]+", "<link $1 href=\"folder/$2\"  $3 >", $tpl);
  3. ?>


Edit:
Warning: preg_replace() [function.preg-replace]: Unknown modifier ']'
Go to the top of the page
+Quote Post
ayeo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


Witaj!

Wyrażenie regularne ograniczasz jakimiś tam znakami np #wyrażenie#, /wyrażenie/ itd
To co znajdzie się za tymi znakami to tzw modyfikator. U Ciebie PHP bierze za modyfikator coś co nim nie jest.

Pozdrawiam!
Go to the top of the page
+Quote Post
qba10
post
Post #6





Grupa: Zarejestrowani
Postów: 264
Pomógł: 20
Dołączył: 19.08.2007
Skąd: Bryńsk k. Lidzbarka Welskiego (nie mylić z Warmińskim)

Ostrzeżenie: (0%)
-----


Witam ponownie
gox dał mi wtedy porawne wyrażenie tylko że ja głupi myślłem ze # to jakaś forma komentarza, ale dzięki ayeo
Tylko że wyrażenie gox'a nie spełnia tego co ja chcę:
Za pomocą wyrażenia gox'a z:
  1. <link rel="stylesheet" href="css/style.css" type="text/css" />

wychodzi:
  1. <link href="folder/css/style.css" >

a ma wyjść:
  1. <link rel="stylesheet" href="folder/css/style.css" type="text/css" />


Kombinuję już kilka godzin ale nic mi nie wyłazi....

Proszę o jakąś wskazówkę

bo nic mi nie wychodzi...

Ten post edytował qba10 26.10.2008, 12:49:16
Go to the top of the page
+Quote Post
marcok
post
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 8
Dołączył: 15.10.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Kod
$tpl = preg_replace('#href="(.*)"#', 'href="folder/$1"', $tpl);


edit: poprawiłem kod

Ten post edytował marcok 26.10.2008, 13:25:14
Go to the top of the page
+Quote Post
pieto
post
Post #8





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Sprawdź jeszcze czy nie masz spacji w href np
href = "link" bo to co innego jak href="link"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:54