Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
qba10
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 sad.gif
webdevil
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
gox
urodzilem cos takiego:

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

dziala... ale gotowca nie dam smile.gif
qba10
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 ']'
ayeo
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!
qba10
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...
marcok
Kod
$tpl = preg_replace('#href="(.*)"#', 'href="folder/$1"', $tpl);


edit: poprawiłem kod
pieto
Sprawdź jeszcze czy nie masz spacji w href np
href = "link" bo to co innego jak href="link"
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.