Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] wyciąganie tytuły ze stringa, mój odwiedzny problem :(
matix
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

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


Witam serdecznie.

Czy ktoś mogłby mi pomóc wyciągnąc tytuł ze stringa:

  1. <a href="http://matix.org/" class=l><b>Matix</b>.Org - tworzenie stron internetowych</a>


Musiałbym mieć coś takiego:

  1. http://matix.org - <b>Matix</b>.Org - tworzenie stron internetowych


Chcialbym to wyciągnąc za pomocą preg_match_all, ale próbuję juz chyba godzinę i nic sad.gif

Może mi ktoś pomóć? Dzieki winksmiley.jpg


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
barat
post
Post #2





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 19.05.2007

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


<a href="http://matix.org/" class=l><b>Matix</b>.Org - tworzenie stron internetowych</a>

http://matix.org - <b>Matix</b>.Org - tworzenie stron internetowych

to chyba będzie taki pattern:

'/(<a href=")(.*?)(")(.*?)(>)(.*?)(<\/a>)/'

najpierw {1}:
(<a href=") - szuka początku linka
potem {2}
(.*?) - sam link, znak zapytania by zlikwidować zachłanność
następnie {3}{4}{5}
(")(.*?)(>) - znak zakończenia linka " , następnie cokolwiek (klasy, title itp), po czym znak zakończenia linka >
dalej {6}
(.*?) - treść linka, wszystko pomiędzy znaczkami <a> </a>
i na koniec {7}
(<\/a>) - znak kończący link </a>

Ponieważ potrzebne nam są tylko {2} i {6} ...

replacement:

'${2} - ${6}'

Czyli całość:

  1. <?php
  2. $pattern = array(
  3. '/(<a href=")(.*?)(")(.*?)(>)(.*?)(</a>)/' 
  4. );
  5. $replacement = array(
  6. '${2} - ${6}'
  7. );
  8. $str = '<a href="http://matix.org/" class=l><b>Matix</b>.Org - tworzenie stron internetowych</a>';
  9.  
  10. $str = preg_replace($pattern, $replacement, $str);
  11.  
  12. echo $str;
  13. ?>


Ktoś kiedyś polecał na forum to:

http://grabun.com/wyrazenia-regularne/

Warto przeczytać smile.gif

Ten post edytował barat 13.08.2007, 13:25:57
Go to the top of the page
+Quote Post
sheerun
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 20.05.2007

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


Trochę namieszałeś barat...

  1. <?php
  2. $pattern = '@<a href="([^"]+)".*>(.*)</a>@imU';
  3. $str = '<a href="http://matix.org/" class=l><b>Matix</b>.Org - tworzenie stron internetowych</a><a href="http://unny.org/" class=l><b><i>Inny</i></b> link do innej strony</a>';
  4. preg_match_all($pattern, $str, $res, PREG_SET_ORDER);
  5. foreach($res as $r) {
  6. echo "{$r[1]} - {$r[2]}<br />";
  7. }
  8. ?>
Go to the top of the page
+Quote Post
barat
post
Post #4





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 19.05.2007

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


Nie namieszałem, a napisałem bardziej topornie niż to Twoje smile.gif Musze sobie przeanalizować bo b.ładnie wygląda smile.gif
Na razie początkujący jestem... smile.gif
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 Aktualny czas: 19.08.2025 - 13:17