Gå til innhold

Hente element fra HTML-tag.


Anbefalte innlegg

Hei,

 

La oss si jeg har en side, som inneholder X-antall DIV TAGer. Disse ser slik ut:

<div id="viewPostN<tilfeldigetall>">

for eksempel:

<div id="viewPostN9943098">

 

Tallene er utrolig dynamisk, og varierer hele tiden. Hvordan kan jeg printe ut KUN tallene? Denne DIVen er blannet sammen med en hel del annen kode. Dersom jeg skulle hatt tallene fra DIVen over, skulle jeg hatt 9943098

 

Basically;

1) Strippe vekk all HTML kode

2) Få takk i tallene som er etter "viewPostN"-DIVene.

 

Takk for svar!

 

loathsome+

Endret av loathsome
Lenke til kommentar
Videoannonse
Annonse

Vil "koden" din fungere, itsmebth? Du må vel skrive \ foran alle tegn, som ", og lignende.

 

Samt at "koden" din ikke forteller loathsome en drit om hvordan det hele fungerer. Hvis du vil hjelpe folk, så skriv mer enn bare en ussel kodesnutt.

Lenke til kommentar

PHP-kode for å gjøre det:

//hent inn siden her liksom:
$htmlsiden = '<h1>for eksempel:</h1>
<div id="viewPostN9943098">';

$vilfinne = '<div id="viewPostN';

$lengde = strlen($vilfinne);

$pos = strpos($htmlsiden, $vilfinne ) + $lengde;

echo substr($htmlsiden, $pos, 7); //7 fordi tallet du vil finne er 7 siffer.

 

Da finner du første forekomst. :)

skulle gå an å redigere den til å funke for flere også :) bare fortsett fra og med $pos + 7 hver gang du skal hente neste :thumbup:

 

Dette var "hardkoding" finnes sikkert en funksjon som fikser det MYE enklere...

Lenke til kommentar

Tror nok "Regular Expressions" er tingen å bruke her, funksjonene i php du trenger da er:

 

http://no2.php.net/preg_match og http://no2.php.net/manual/en/function.preg-match-all.php

 

Dette kan kanskje omsettes til følgende kode (utestet):

preg_match_all('/(\d+)/', $sidenDin, $enToDimensjonalArrayMedAlleTallene);

 

Denne vil da fange opp absolutt alle tall på siden, så ved å inkludere litt mer tekst rundt, vil den kanskje bare fange opp de tallene du vil ha, f.eks:

 

preg_match_all('/viewPostN(\d+)/', $sidenDin, $enToDimensjonalArrayMedAlleTallene);

 

Om du ønsker å lære mer om regulære uttrykk kan du kanskje starte med å lese her:

http://en.wikipedia.org/wiki/Regular_expression

 

Tabeller over substituering i regulære uttrykk, som kanskje duger er her:

 

http://www.regular-expressions.info/reference.html

http://www.greenend.org.uk/rjk/2002/06/regexp.html

Endret av magicgunnar
Lenke til kommentar
Vil "koden" din fungere, itsmebth? Du må vel skrive \ foran alle tegn, som ", <, > og lignende.

 

Samt at "koden" din ikke forteller loathsome en drit om hvordan det hele fungerer. Hvis du vil hjelpe folk, så skriv mer enn bare en ussel kodesnutt.

8150505[/snapback]

Jeg vet det ble litt lite info, men jeg måtte på skolen :p.

 

PHP
ereg('<div id="viewPostN([0-9]+)">', '<div id="viewPostN9943098">', $ret);

print_r($ret);

Array

(

[0] => <div id="viewPostN9943098">

[1] => 9943098

)

Endret av itsmebth
Lenke til kommentar

Hei, og takk for svar. Har sett litt på regular expressions, og fått hjelp et annet sted. Har kommet fram til følgende kode som funker utmerket!

 

PHP
<?php

 

$html '<div id="viewPostN9943098"> </div> 

<div id="viewPostN6325153">Tralalala</div>

<div id="viewPostN1235353">Blalala</div>';

 

preg_match_all('#<div id="viewPostN(.*)">#iU'$html$nummere);

 

foreach($nummere[1] as $nummer) {

 

echo $nummer."<br />";

 

}

 

?> 

 

loathsome :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...