Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Preg_match
PawelC
post 22.03.2008, 02:05:32
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Jak wyciągnąć interesujące nas dane z polecen html, przykładowo chce pobrać zawartość hrefa czyli:
  1. <a href="adres" class="costam">

i chcę aby pobrał mi tylko tą część gdzie jest napisane adres, bo mi zawsze pobiera nawet z class

Ten post edytował ExPlOiT 22.03.2008, 02:06:12
Go to the top of the page
+Quote Post
kilas88
post 22.03.2008, 02:19:50
Post #2





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

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


Kod
<a href="adres" id="id_linku" class="costam">

<script type="text/javascript">
var adres_linku = document.getElementById("id_linku").href;
</script>

Może tak by się dało?
Go to the top of the page
+Quote Post
dr_bonzo
post 22.03.2008, 02:42:24
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. <?php
  2. preg_match( "#<a.+?href="(.+?)".+?>#", $html, $matches );
  3. print_r($matches);


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
bmL
post 22.03.2008, 03:15:17
Post #4





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Podpisuję się pod tym pytanie kombinowałem i wykombinowałem coś takiego:
  1. <?php
  2. preg_match_all( "#href=\"[^\"]*\"#", $txt, $m );
  3. foreach($m as $mm)
  4. {
  5. for($i=0; $i < count($mm); $i++)
  6. {
  7. $linki[$i] = str_replace('href=',' ',$mm[$i]);
  8. $linki[$i] = str_replace('"','',$linki[$i]);
  9. }
  10. }
  11. foreach($linki as $x)
  12. echo $x;
  13. ?>

Ale to strasznie na około i zapewne da się dużo krócej.


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
PawelC
post 22.03.2008, 03:23:07
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


pobrało nawet adresy tupu http://www.strefa-seo.info/, a głównie chodzi mi o to jak napisałem aby pobrał tylko kat="to" ale plusik się tobie i dr_bonzo należy
Go to the top of the page
+Quote Post
bmL
post 22.03.2008, 03:59:43
Post #6





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Coś takiego?
  1. <?php
  2. preg_match_all( "#href=\"[^\"]*\" class=\"costam\"#", $txt, $m );
  3. foreach($m as $mm)
  4. {
  5. for($i=0; $i < count($mm); $i++)
  6. {
  7. $linki[$i] = str_replace('href=',' ',$mm[$i]);
  8. $linki[$i] = str_replace('"','',$linki[$i]);
  9. $linki[$i] = str_replace('class=costam','',$linki[$i]);
  10. }
  11. }
  12. foreach($linki as $x)
  13. echo $x;
  14. ?>


Ten post edytował bmL 22.03.2008, 04:01:25


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
kilas88
post 22.03.2008, 12:39:26
Post #7





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

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


Jak Wy sobie lubicie komplikować życie. Nie lepiej jest użyć js, który może bezpośrednio pobierać dane ze znaczników?

Kod
<a href="http://www.onet.pl/" id="id_linku" class="costam">Link</a>

<div id="text">&nbsp;</div>

<script type="text/javascript">
function wstawText() {
    document.getElementById("text").innerHTML = document.getElementById("id_linku").href;
}

onload=wstawText;
</script>

Przetestuj ten kod, działa równie dobrze jak te w PHP. No może trochę lepiej - można się w JS odwoływać do wszystkich elementów czy atrybutów z HTML, można nawet tworzyć własne.

Btw: wiem, że temat tyczy się preg_match, pokazałem jednak alternatywne rozwiązanie, znacznie łatwiejsze - choć nie zawsze możliwe do wykorzystania. Pozdro.

Ten post edytował kilas88 22.03.2008, 12:42:16
Go to the top of the page
+Quote Post
webdice
post 22.03.2008, 12:43:45
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(kilas88 @ 22.03.2008, 12:39:26 ) *
Jak Wy sobie lubicie komplikować życie. Nie lepiej jest użyć js, który może bezpośrednio pobierać dane ze znaczników?

Kod
<a href="http://www.onet.pl/" id="id_linku" class="costam">Link</a>

<div id="text">&nbsp;</div>

<script type="text/javascript">
function wstawText() {
    document.getElementById("text").innerHTML = document.getElementById("id_linku").href;
}

onload=wstawText;
</script>

Przetestuj ten kod, działa równie dobrze jak te w PHP. No może trochę lepiej - można się w JS odwoływać do wszystkich elementów czy atrybutów z HTML, można nawet tworzyć własne.

Btw: wiem, że temat tyczy się preg_match, pokazałem jednak alternatywne rozwiązanie, znacznie łatwiejsze - choć nie zawsze możliwe do wykorzystania. Pozdro.


Tak ale to później trzeba przesłać do PHP i umieścić np w bazie, w sumie problemu nie ma - AJAX, ale co w sytuacji gdy jest to uruchamiane przez CRON'a? Jeśli już to można używać PHP DOM.
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: 14.08.2025 - 00:59