Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne
daris
post 22.01.2008, 15:05:06
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

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


Jak zrobić tak aby w danym kodzie html za pomocą wyrażeń regularnych wyłapać wszystkie wystąpienia <input type=button value=cos_tam> i dodać do tablicy to cos_tam?

Np jak mam taki kod:
  1. <input type=button value=test><input type=button value=test3>

To chciałbym otrzymać coś takiego:
Kod
Array
(
    [0] => test
    [1] => test3
)


Udało mi się to zrobić narazie tylko takim wyrażeniem:
Kod
#\<input (.*)type=button(.*)value=test\>(.*)>#s

ale co mi po tym jak nie do końca działa tak jak powinno czyli może pasować np taki kod:
Kod
<input type=button>fds value=test dsfsdfs<input type=button value=test>


Jak to zawęzić?

Ten post edytował daris 22.01.2008, 15:10:05


--------------------
FluxBB - lekki i szybki skrypt forum | Polskie wsparcie FluxBB
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
qrees
post 22.01.2008, 18:50:13
Post #2





Grupa: Zarejestrowani
Postów: 275
Pomógł: 44
Dołączył: 23.11.2007

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


Cytat(daris @ 22.01.2008, 15:05:06 ) *
Jak zrobić tak aby w danym kodzie html za pomocą wyrażeń regularnych wyłapać wszystkie wystąpienia <input type=button value=cos_tam> i dodać do tablicy to cos_tam?

Np jak mam taki kod:
  1. <input type=button value=test><input type=button value=test3>

To chciałbym otrzymać coś takiego:
Kod
Array
   (
       [0] => test
       [1] => test3
   )


Udało mi się to zrobić narazie tylko takim wyrażeniem:
Kod
#\<input (.*)type=button(.*)value=test\>(.*)>#s

ale co mi po tym jak nie do końca działa tak jak powinno czyli może pasować np taki kod:
Kod
<input type=button>fds value=test dsfsdfs<input type=button value=test>


Jak to zawęzić?

Kod
#\<input[^>]*value=(\w*)[^>]*>\#s

A jeżeli poprawisz wygląd tego inputa, żeby było value="test" zamiast value=test:
Kod
#\<input[^>]*value="([^"]*)"[^>]*\>#s

Nie sprawdzałem czy działa, ale trick polega na użyciu [^>], który pasuje do każdego znaku poza >.
Go to the top of the page
+Quote Post
Gacek89
post 23.01.2008, 00:45:00
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 8
Dołączył: 2.11.2007
Skąd: Katowice

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


Witam, niechce zakładać nowego tematu bo pytanie podobne.
Chce znalesc wszystke wyrazenia reguralne tego typu
Kod
href="http://www.costamcostam.pl/profil/[b]*[/b]/"


*-wsztkie znaki one własnie mnie interesuja, nieznam sie na wyrażeniach regularnych ledwo co umiem jes stosować 
Go to the top of the page
+Quote Post
qrees
post 23.01.2008, 09:57:00
Post #4





Grupa: Zarejestrowani
Postów: 275
Pomógł: 44
Dołączył: 23.11.2007

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


Cytat(Gacek89 @ 23.01.2008, 00:45:00 ) *
Witam, niechce zakładać nowego tematu bo pytanie podobne.
Chce znalesc wszystke wyrazenia reguralne tego typu
Kod
href="http://www.costamcostam.pl/profil/[b]*[/b]/"


*-wsztkie znaki one własnie mnie interesuja, nieznam sie na wyrażeniach regularnych ledwo co umiem jes stosować


W takim razie pewnie zainteresuje cię strona:
http://www.php.net/manual/en/reference.pcr...tern.syntax.php
W skrócie powiem, że . odpowiada dowolnemu znakowi, a * dowolnej ilości poprzedniuego znaku. Czyli dowolny ciąg znaków to .* .
Go to the top of the page
+Quote Post
Gacek89
post 23.01.2008, 12:06:37
Post #5





Grupa: Zarejestrowani
Postów: 77
Pomógł: 8
Dołączył: 2.11.2007
Skąd: Katowice

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


ja wiem co oznacza * daltego go urzyłem
lecz sam poprawnego zapytani niumiem stworzyc, zrobiłem takie coś:
Kod
/^(http:\/\/www.fotka.pl\/profil\/\/)$/

ale niedziała zwraca pusta tabele z 2lub 3 polami a takich wyrazen w strignu jest z 20.
Go to the top of the page
+Quote Post
qrees
post 23.01.2008, 12:21:31
Post #6





Grupa: Zarejestrowani
Postów: 275
Pomógł: 44
Dołączył: 23.11.2007

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


Cytat(Gacek89 @ 23.01.2008, 12:06:37 ) *
ja wiem co oznacza * daltego go urzyłem
lecz sam poprawnego zapytani niumiem stworzyc, zrobiłem takie coś:
Kod
/^(http:\/\/www.fotka.pl\/profil\/\/)$/

ale niedziała zwraca pusta tabele z 2lub 3 polami a takich wyrazen w strignu jest z 20.

^ oznacza początek tekstu (albo linii) a $ jego koniec. Więc jeżeli w tekście nie ma dokładnie takiej linii:
Kod
http://www.fotka.pl/profil//

To nic nie dostaniesz.
Go to the top of the page
+Quote Post
iron77
post 18.02.2008, 15:31:38
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.02.2008

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


witam
mam pewne dosc amatorskie pytanie w kwestii wyrazen regularnych, ktorego rozwiazanie komus obeznanemu w temacie zajmie, mam nadzieje, chwile smile.gif

w skrocie o co chodzi:

mam pewien string, gdzies w nim jest htmlowy komentarz <!-- element -->
filtruje go poprzez
Kod
$string = str_replace('<!-- element -->', drawElement(), $string);


problem pojawia sie jednak, kiedy chce zamienic jakis element z zawartym wewnatrz agumentem, np. <!-- pokaz element 5 --> , tak aby zamienic taki comment na drawElement(5);

podejrzewam, ze wystarczy tu jakies niezbyt skomplikowane wyrazenie regularne, jesli ktos moglby pomoc to bylo by spoko
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 15:40:52
Post #8





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


drawElement() to jest twoja własna, phpowa funkcja czy to ma być string na który zamieniasz...?
Go to the top of the page
+Quote Post
iron77
post 18.02.2008, 15:41:25
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.02.2008

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


moja funkcja
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 15:58:23
Post #10





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Aż takie proste to to nie jest... tongue.gif
  1. <?php
  2. $string='asdfsd fa sdf asdf <!-- pokaz element 5 --> asdf asdf <!-- element --> asdf <!-- element --> asdf sdf <!-- pokaz element 5 --> asf asd f as';
  3.  
  4. echo preg_replace_callback('#<!--.+element ([^ ]+|)[ ]?-->#U','clbk',$string);
  5.  
  6. function clbk($array){
  7. if($array[1]=='') return drawElement();
  8. else return drawElement($array[1]);
  9. }
  10. ?>


Ten post edytował nowotny 18.02.2008, 15:58:50
Go to the top of the page
+Quote Post
iron77
post 18.02.2008, 22:06:22
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.02.2008

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


ok dzieki smile.gif zaraz sprawdzam jak podziala w moim przypadku

dziekowka -jest ok
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:45