Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Σήκωσα έναν άλλο server για να συνεχίσω την δουλειά και μου εμφανίζει:

>Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\site\cronos\login.php on line 18

προφανώς δεν βρίσκει την βιβλιοθήκη του curl αλλα γιατί και θα πρέπει να την κάνω ξεχωριστά εγκατάσταση? Είμαι απο windows τώρα ενώ πριν είχα Linux.

  • Απαντ. 73
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Όντως δεν είναι εγκατεστημένη και δεν ξέρω πόσο εύκολο είναι να το βάλεις ξεχωριστά στα windows. Συνεχίζεις στο linux ή ψάχνεις πως να βάλεις τον php curl στα windows :P

Δημοσ.

Οκ γυρίζω στο λινουχ απλά είχα 22' οθόνη στα windows... :/ Απο οτι διάβασα είναι ένα ';' που πρέπει αν βγάλεις αλλα δεν μου δουλεύει. τεσπα...

Δημοσ.

Βρήκα λίγο χρόνο να ασχοληθώ και χρησιμοποιώ αυτό:

>'/<tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images\/course1.gif" width="16" \/><\/td><td colspan="2" valign="top" class="topBorderLight">\(.*([0-9]{3})\) .*/'

αλλα φαίνεται να μην δουλεύει. Μπαίνει στο huston we have problem :P

 

το θέμα είναι ότι τελικά τα καταλαβα :) και το κακό είναι οτι μου φαίνεται τόσο λογικό και σωστό. δεν ξέρω τι πάει στραβά... :/

Δημοσ.

Καλημέρα! Πρωινός και τα εγκεφαλικά μου κύτταρα δεν δουλεύουν κανονικά, οπόταν take everything with caution!

 

Δοκίμασε αυτό:

>'/<tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images\/course1.gif" width="16" \/><\/td><td colspan="2" valign="top" class="topBorderLight">\(.*([0-9]{3})\)  .*<span class="redfonts" \/><\/td>'

 

Είναι διπλό το space πριν το τελευταίο .* και επίσης σου υπενθυμίζω ότι το .* είναι αρκετά γενικό για να τελειώνεις το regular expression σου με αυτό. Για αυτό και προτείνω να δοκιμάσεις με το <span class="redfonts" \/><\/td> στο τέλος!

 

Επίσης να είσαι σίγουρος ότι ανοίγει η σελίδα και έχεις το σωστό περιεχόμενο και δεν έχει αλλάξει μορφή! Και με τα encodings ελπίζω να είναι τακτοποιημένο το θέμα! :P

Δημοσ.

Το αποτέλεσμα που θα δώ για να συντάξω το expression είναι αυτό μετα το curl. Αυτό που επιστρέφει το curl. Σωστά? Αν ναι...

 

ένα κομμάτι παραδείγματος είναι:

><tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images/course1.gif" width="16" /></td><td colspan="2" valign="top" class="topBorderLight">(ΠΛΥ109)  Γενική Φυσική Ι<span class="redfonts" /></td>

 

και το expression,

 

>'/<tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images\/course1.gif" width="16" \/><\/td><td colspan="2" valign="top" class="topBorderLight">\(.*([0-9]{3})\)  .*<span class="redfonts" \/><\/td>/'

 

δεν το παίρνει όμως! Μπαίνει στο else... δεν μπορώ να καταλάβω τι ακριβως γίνεται ρε γμτ :/

 

Ας το θέσω πιο απλά, εκτελώντας:

>'/><td colspan="2" valign="top" class="topBorderLight">(.*)<span class="redfonts" \/><\/td>/'

είναι μια χαρά αλλα

>'/><td colspan="2" valign="top" class="topBorderLight">\(.*([0-9]{3})\)  .*<span class="redfonts" \/><\/td>/'

χτυπάει. Προφανώς το

>\(.*([0-9]{3})\)  .*

δεν είναι σωστό...

Δημοσ.

Κάπου εδώ ξεκινάνε σιγά σιγά να μου τελειώνουν οι ιδέες...

 

Το μόνο που μένει, είναι να βάλεις "χειροκίνητα" το παράδειγμα στην μεταβλητή που περνάς στο preg_match_all να δεις αν το "παίρνει".

 

Αν ναι, τότε το πρόβλημα σου είναι στην μορφή του περιεχομένου που επιστρέφετε με τον curl.

Αν όχι, τότε πιθανότατα κάποιο θέμα έχει η λογική του php script (πχ χρήση κάποιας λάθος μεταβλητής)

 

Με το απλό:

>'/<tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images\/course1.gif" width="16" \/><\/td><td colspan="2" valign="top" class="topBorderLight">(.*)<span class="redfonts" \/><\/td>/'

δεν δουλεύει πλέων;

 

Edit:

Σε πέτυχα σε edit πάλι!

 

Λοιπόν δοκίμασε μια:

>'/<tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images\/course1.gif" width="16" \/><\/td><td colspan="2" valign="top" class="topBorderLight">(.*)  (.*)<span class="redfonts" \/><\/td>/'

Να δούμε τι θα κάνει.

 

Μια υποψία πως οι παρενθέσεις είναι html escape χαρακτήρες

Δημοσ.

:P

 

1. όχι δεν δουλεύει και το απλό που είπες :D

2. Huston we have a problem! :(

 

its fucking crazy whats going on...

 

edit: παρατήρησα ότι μου τα χαλάει αν προσθέσω κάτι πριν το

><td colspan="2" valign="top" class="topBorderLight">(.*)<span class="redfonts" \/><\/td>/

οτι δήποτε βάζω πριν το <td colspan το χαλάει ;/

 

edit no2 :P

σε αυτό:

>'/<tr height="25" bgcolor="#fafafa"><td valign="top"> <img align="absbottom" src="images\/course1.gif" width="16" \/><\/td><td colspan="2" valign="top" class="topBorderLight">(.*)<span class="redfonts" \/><\/td>/'

 

μήπως το # πρέπει να το απορίψει? μήπως φταίει το κενό πριν απο το <img? Δεν παίζει ειλικρινα κάτι άλλο διάλεξε ένα απο τα δυο σε παρακαλώ :P

Δημοσ.

Κάπου εδώ κατάλαβα πως δεν είναι πρόβλημα του expression. Είναι απολύτως σωστό γτ το δοκίμασα σε ένα σιτε. Εμ οπότε δεν έρχεται καλά το curl?

Δημοσ.

Καλημέρα, αν μπορώ να προτείνω μια εναλλακτική από τα regex μπορείς να κατεβάσεις το http://sourceforge.net/projects/simplehtmldom/files/ , το κάνεις include στο script σου και δημιουργεις ενα DOM Object απλα με την εντολή

>$obj=str_get_html($httppage);

όπου $httppage είναι το string που επιστρέφει η cURL με την σελίδα που θες.

 

Το Documentation (λίγο φτωχό) είναι εδώ http://simplehtmldom.sourceforge.net/manual.htm

 

Απο κει και πέρα είναι θέμα του να πάρεις τα στοιχεία που θές, π.χ. η εντολή

>$cells=$obj->find('td');

θα σου φέρει ολα τα κελιά στην σελίδα αν θες να τυπώσεις την τιμή τους μπορείς να κάνεις το εξής

>foreach($cells as $c){
echo $c->plaintext;
}

Αν θες κελιά τα οποία έχουν κάτι χαρακτηριστικό όπως στην σελίδα που έδωσες μπορείς να γίνεις πιο συγκεκριμένος δλδ

>$cells=$obj->find('.topBorderLight'); //δηλαδή να σου φέρει τα κελιά με class=topBorderLight έπειτα βλέπεις την τιμή με τον ίδιο τρόπο 
foreach($cells as $c){
echo $c->plaintext;
} 

Δημοσ.

Επισήμως σηκώνω τα χέρια ψιλά :P

 

Το space και το # δεν παίζει να επηρεάζουν

 

Δοκίμασε να το φτιάξεις, χωρίς να βάλεις κάτι πριν το <td colspan αφού λες πως δουλεύει. Εσένα σε νοιάζει να πάρεις τα στοιχεία που θες.

 

Είμαι σχεδόν σίγουρος ότι κάτι αλλοιώνετε στην εμφάνιση του browser το περιεχόμενο του curl, για αυτό και δεν φτιάχνουμε το κατάλληλο reg exp

 

Αποθήκευσε το περιεχόμενο του curl σε ένα αρχείο κειμένου .txt και δες πως είναι στο notepad, μπας και κανένας χαρακτήρας εμφανίζετε διαφορετικά (πχ το space ως  ).

 

Επίσης δοκίμασε αυτό που σου λέει ο inkognito87 :)

Δημοσ.

Όταν εκτυπώνονται στον Browser το encoding φαίνεται μια χαρά. Όταν πάνε σε αρχείο το encoding ούτε οι γάτες δεν το καταλαβαίνουν...

Δημοσ.

μαλιστάαααα...

 

για στείλε, αν θες, τους κωδικούς σου και την σελίδα με pm να δω τι παίζει με την κωδικοποίηση. (Μπορείς να αλλάξεις σε προσωρινό κωδικό και να τον επαναφέρεις πίσω ;))

Δημοσ.

Θα το τραβήξω λίγο ακόμη με ατόν τον τρόπο κ αν δεν βγει τπτ αυτό θα κάνω @inkognito87. Σε ευχαριστώ!

Δημοσ.

Καλημέρα, αν μπορώ να προτείνω μια εναλλακτική από τα regex μπορείς να κατεβάσεις το http://sourceforge.net/projects/simplehtmldom/files/ , το κάνεις include στο script σου και δημιουργεις ενα DOM Object απλα με την εντολή

>$obj=str_get_html($httppage);

όπου $httppage είναι το string που επιστρέφει η cURL με την σελίδα που θες.

 

Το Documentation (λίγο φτωχό) είναι εδώ http://simplehtmldom.sourceforge.net/manual.htm

 

Απο κει και πέρα είναι θέμα του να πάρεις τα στοιχεία που θές, π.χ. η εντολή

>$cells=$obj->find('td');

θα σου φέρει ολα τα κελιά στην σελίδα αν θες να τυπώσεις την τιμή τους μπορείς να κάνεις το εξής

>foreach($cells as $c){
echo $c->plaintext;
}

Αν θες κελιά τα οποία έχουν κάτι χαρακτηριστικό όπως στην σελίδα που έδωσες μπορείς να γίνεις πιο συγκεκριμένος δλδ

>$cells=$obj->find('.topBorderLight'); //δηλαδή να σου φέρει τα κελιά με class=topBorderLight έπειτα βλέπεις την τιμή με τον ίδιο τρόπο 
foreach($cells as $c){
echo $c->plaintext;
} 

 

:) Θα έλεγα ότι με βολεύει πιο πολύ αυτό! Υπερευχαριστώ φίλε μου... ίσως κάποια άλλη στιγμή ασχοληθώ με τα expressions, που ελπίζω να είμαι πιο τυχερός!

 

Κάτι άλλο που προέκυψε, αν κάνω:

>$buf="μητσος"
echo $buf

δεν θα το εκτυπώσει με το σωστό encoding. Τι πρέπει να αλλάξω? ;/ Κάπου διάβασα ότι πρέπει αν βάλω:

>header('charset="μπλα μπλα"');

πριν απο το echo αλλα δεν μου δουλεύει! :/

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...