Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyciąganie tytuły ze stringa
Forum PHP.pl > Forum > PHP
matix
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
barat
<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
sheerun
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. ?>
barat
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
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.