strpos offset

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
kostaspel
Δημοσιεύσεις: 86
Εγγραφή: 04 Μαρ 2008 12:38

strpos offset

Δημοσίευση από kostaspel » 06 Ιουν 2013 23:22

Καλησπέρα σε όλους.

θα ήθελα μία βοήθεια σχετικά με το offset στο strpos.

έχω μία εγγραφή στη βάση που είναι κώδικας html της μορφής

Κώδικας: Επιλογή όλων

<div id="row">
			<div id="div_titlos">titlos</div>
			<div id="div_timh">timh</div>
		</div>
		<div id="row">
			<div id="div_titlos">titlos</div>
			<div id="div_timh">timh</div>
		</div>
		<div id="row">
			<div id="div_titlos">titlos</div>
			<div id="div_timh">timh</div>
		</div>
		<div id="row">
			<div id="div_titlos">titlos</div>
			<div id="div_timh">timh</div>
		</div>
		<div id="row">
			<div id="div_titlos">titlos</div>
			<div id="div_timh">timh</div>
		</div>
		<div id="row">
			<div id="div_titlos">titlos</div>
			<div id="div_timh">timh</div>
		</div>
αφού τον καλέσω από τη βάση τρέχω ένα substr_count ($code, 'row'); και βρίσκω τον αριθμό των γραμμών.
Μετά θέλω να πάρω τις τιμές titlos από κάθε γραμμή και τρέχω το

Κώδικας: Επιλογή όλων

for&#40;$i=0; $i < $rows_n; $i++&#41; &#123;
$st = strpos&#40;$code, 'div_titlos">', $i&#41;;
$en = $strpos&#40;$code, '</div><div id="div_timh>', $i&#41;;
$timh = substr&#40;$code, $st, &#40;$en - $st&#41;&#41;;
&#125;
το πρόβλημα είναι ότι όσο και να αυξάνετε το $i, μου επιστρέφει τις τιμές για τα πρώτα.
πως μπορεί να λυθεί αυτό?

ευχαριστώ για το χρόνο σας.

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1948
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

strpos offset

Δημοσίευση από Alice_Cooper » 07 Ιουν 2013 09:36

kati tetoio thes??

Κώδικας: Επιλογή όλων

<?php $code = '<div id="row">
         <div id="div_titlos">titlos</div>
         <div id="div_timh">timh</div>
      </div>
      <div id="row">
         <div id="div_titlos">titlos</div>
         <div id="div_timh">timh</div>
      </div>
      <div id="row">
         <div id="div_titlos">titlos</div>
         <div id="div_timh">timh</div>
      </div>
      <div id="row">
         <div id="div_titlos">titlos</div>
         <div id="div_timh">timh</div>
      </div>
      <div id="row">
         <div id="div_titlos">titlos</div>
         <div id="div_timh">timh</div>
      </div>
      <div id="row">
         <div id="div_titlos">titlos</div>
         <div id="div_timh">timh</div>
      </div>';
$inew=0;
$rows_n = substr_count &#40;$code, 'row'&#41;;
echo $rows_n;
for&#40;$i=0; $i < $rows_n; $i++&#41; &#123;
$st = strpos&#40;$code, 'div_titlos">', $inew&#41;;
$en = strpos&#40;$code, '</div>
         <div id="div_timh">timh</div>', $inew&#41;;
echo "\n&#91;".$i."&#93;".$st."|".$en;
$inew=$en+1;
$timh = substr&#40;$code, $st, &#40;$en - $st&#41;&#41;;
&#125; ?>
vasika oi times tou $i apo to 1 mexri to 6
esy thes timh apo ton arithmo char pou vrethike kai pano
episis sto $en zhtages synexomeno to string... pou den einai ... exei to line brake kai ta spaces
Τελευταία επεξεργασία από το μέλος Alice_Cooper την 07 Ιουν 2013 10:16, έχει επεξεργασθεί 1 φορά συνολικά.

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

strpos offset

Δημοσίευση από gvre » 07 Ιουν 2013 10:02

kostaspel έγραψε:αφού τον καλέσω από τη βάση τρέχω ένα substr_count ($code, 'row'); και βρίσκω τον αριθμό των γραμμών.
Μετά θέλω να πάρω τις τιμές titlos από κάθε γραμμή
Μπορείς να το κάνεις εύκολα με το παρακάτω regexp ή με κάποιον html dom parser (π.χ. simplehtmldom).

Κώδικας: Επιλογή όλων

$pattern = '#<div id="row">\s*<div id="div_titlos">&#40;&#91;^<&#93;+&#41;</div>\s*<div id="div_timh">&#40;&#91;^<&#93;+&#41;</div>\s*</div>#si';
if &#40;preg_match_all&#40;$pattern, $html, $matches, PREG_SET_ORDER&#41;&#41;
&#123;
        foreach&#40;$matches as $m&#41;
        &#123;
                $title = $m&#91;1&#93;;
                $value = $m&#91;2&#93;;

        &#125;
&#125;

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1948
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

strpos offset

Δημοσίευση από Alice_Cooper » 07 Ιουν 2013 10:20

prosthesa kai ti den pigene kala sto apo pano post
gvre έγραψε:Μπορείς να το κάνεις εύκολα με το παρακάτω regexp ή με κάποιον html dom parser (π.χ. simplehtmldom).]
xmmm poio efkolo den to les ....
nomizo poio aplo tha tou fanei to diko tou skeptiko diorthomeno :p
programatistika poio sosto nomizo mporeis na to peis ...
less code...

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

strpos offset

Δημοσίευση από gvre » 07 Ιουν 2013 10:32

Αν ο kostaspel δεν έχει σχέση με regexp είναι προτιμότερο να χρησιμοποιήσει έναν html dom parser, για να μπορεί να διαβάσει τον κώδικα και μετά από 1-2 χρόνια ;)
Προσωπικά, για απλό parsing χρησιμοποιώ regexp. Με 1 γραμμή κώδικα είσαι έτοιμος :)

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1948
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

strpos offset

Δημοσίευση από Alice_Cooper » 07 Ιουν 2013 10:55

vasika einai volikes oi regex
se kapoies fasis vevea gia na katsoun
se lionoun ligo ... gia enan char synithos pou den prosekses :p

p.s. kati pou den kritikara prin ....
h lish me tin regex einai poio sosth giati kai na allaksh o aritmos ton kenon sto deftero elegxo
epistrefei sosta to apotelesma

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

strpos offset

Δημοσίευση από gvre » 07 Ιουν 2013 13:36

Alice_Cooper έγραψε:p.s. kati pou den kritikara prin ....
h lish me tin regex einai poio sosth giati kai na allaksh o aritmos ton kenon sto deftero elegxo
epistrefei sosta to apotelesma
Έτσι είναι. Με τα regexp μπορείς να κάνεις πράγματα, τα οποία για να γίνουν με strpos κλπ θα χρειάζονταν πάρα πολλές γραμμές κώδικα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες