Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Preg_match
Forum PHP.pl > Forum > Przedszkole
PawelC
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
kilas88
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?
dr_bonzo
  1. <?php
  2. preg_match( "#<a.+?href="(.+?)".+?>#", $html, $matches );
  3. print_r($matches);
bmL
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.
PawelC
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
bmL
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. ?>
kilas88
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.
webdice
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.
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.