poscore Δημοσ. 19 Ιουνίου 2012 Μέλος Δημοσ. 19 Ιουνίου 2012 Σήκωσα έναν άλλο server για να συνεχίσω την δουλειά και μου εμφανίζει: >Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\site\cronos\login.php on line 18 προφανώς δεν βρίσκει την βιβλιοθήκη του curl αλλα γιατί και θα πρέπει να την κάνω ξεχωριστά εγκατάσταση? Είμαι απο windows τώρα ενώ πριν είχα Linux.
PeLLaRaS Δημοσ. 19 Ιουνίου 2012 Δημοσ. 19 Ιουνίου 2012 Όντως δεν είναι εγκατεστημένη και δεν ξέρω πόσο εύκολο είναι να το βάλεις ξεχωριστά στα windows. Συνεχίζεις στο linux ή ψάχνεις πως να βάλεις τον php curl στα windows
poscore Δημοσ. 19 Ιουνίου 2012 Μέλος Δημοσ. 19 Ιουνίου 2012 Οκ γυρίζω στο λινουχ απλά είχα 22' οθόνη στα windows... :/ Απο οτι διάβασα είναι ένα ';' που πρέπει αν βγάλεις αλλα δεν μου δουλεύει. τεσπα...
poscore Δημοσ. 21 Ιουνίου 2012 Μέλος Δημοσ. 21 Ιουνίου 2012 Βρήκα λίγο χρόνο να ασχοληθώ και χρησιμοποιώ αυτό: >'/<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 το θέμα είναι ότι τελικά τα καταλαβα και το κακό είναι οτι μου φαίνεται τόσο λογικό και σωστό. δεν ξέρω τι πάει στραβά... :/
PeLLaRaS Δημοσ. 22 Ιουνίου 2012 Δημοσ. 22 Ιουνίου 2012 Καλημέρα! Πρωινός και τα εγκεφαλικά μου κύτταρα δεν δουλεύουν κανονικά, οπόταν 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 ελπίζω να είναι τακτοποιημένο το θέμα!
poscore Δημοσ. 23 Ιουνίου 2012 Μέλος Δημοσ. 23 Ιουνίου 2012 Το αποτέλεσμα που θα δώ για να συντάξω το 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})\) .* δεν είναι σωστό...
PeLLaRaS Δημοσ. 23 Ιουνίου 2012 Δημοσ. 23 Ιουνίου 2012 Κάπου εδώ ξεκινάνε σιγά σιγά να μου τελειώνουν οι ιδέες... Το μόνο που μένει, είναι να βάλεις "χειροκίνητα" το παράδειγμα στην μεταβλητή που περνάς στο 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 χαρακτήρες
poscore Δημοσ. 23 Ιουνίου 2012 Μέλος Δημοσ. 23 Ιουνίου 2012 1. όχι δεν δουλεύει και το απλό που είπες 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 σε αυτό: >'/<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? Δεν παίζει ειλικρινα κάτι άλλο διάλεξε ένα απο τα δυο σε παρακαλώ
poscore Δημοσ. 23 Ιουνίου 2012 Μέλος Δημοσ. 23 Ιουνίου 2012 Κάπου εδώ κατάλαβα πως δεν είναι πρόβλημα του expression. Είναι απολύτως σωστό γτ το δοκίμασα σε ένα σιτε. Εμ οπότε δεν έρχεται καλά το curl?
inkognito87 Δημοσ. 23 Ιουνίου 2012 Δημοσ. 23 Ιουνίου 2012 Καλημέρα, αν μπορώ να προτείνω μια εναλλακτική από τα 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; }
PeLLaRaS Δημοσ. 23 Ιουνίου 2012 Δημοσ. 23 Ιουνίου 2012 Επισήμως σηκώνω τα χέρια ψιλά Το space και το # δεν παίζει να επηρεάζουν Δοκίμασε να το φτιάξεις, χωρίς να βάλεις κάτι πριν το <td colspan αφού λες πως δουλεύει. Εσένα σε νοιάζει να πάρεις τα στοιχεία που θες. Είμαι σχεδόν σίγουρος ότι κάτι αλλοιώνετε στην εμφάνιση του browser το περιεχόμενο του curl, για αυτό και δεν φτιάχνουμε το κατάλληλο reg exp Αποθήκευσε το περιεχόμενο του curl σε ένα αρχείο κειμένου .txt και δες πως είναι στο notepad, μπας και κανένας χαρακτήρας εμφανίζετε διαφορετικά (πχ το space ως ). Επίσης δοκίμασε αυτό που σου λέει ο inkognito87
poscore Δημοσ. 23 Ιουνίου 2012 Μέλος Δημοσ. 23 Ιουνίου 2012 Όταν εκτυπώνονται στον Browser το encoding φαίνεται μια χαρά. Όταν πάνε σε αρχείο το encoding ούτε οι γάτες δεν το καταλαβαίνουν...
PeLLaRaS Δημοσ. 23 Ιουνίου 2012 Δημοσ. 23 Ιουνίου 2012 μαλιστάαααα... για στείλε, αν θες, τους κωδικούς σου και την σελίδα με pm να δω τι παίζει με την κωδικοποίηση. (Μπορείς να αλλάξεις σε προσωρινό κωδικό και να τον επαναφέρεις πίσω )
poscore Δημοσ. 23 Ιουνίου 2012 Μέλος Δημοσ. 23 Ιουνίου 2012 Θα το τραβήξω λίγο ακόμη με ατόν τον τρόπο κ αν δεν βγει τπτ αυτό θα κάνω @inkognito87. Σε ευχαριστώ!
poscore Δημοσ. 24 Ιουνίου 2012 Μέλος Δημοσ. 24 Ιουνίου 2012 Καλημέρα, αν μπορώ να προτείνω μια εναλλακτική από τα 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 αλλα δεν μου δουλεύει! :/
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα