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

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

Δημοσ.

Καλημέρα

 

Σιγουρέψου ότι η σελίδα στο browser που βλέπεις τα αποτελέσματα έχει σωστή δομή HTML και οπωσδήποτε στο <head> βάζεις το

><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

κάνε κάτι του στύλ

>
<html>
      <head>
           <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      </head>
  <body>
       <?php
           //το php script που έχεις
       ?>
  </body>
</html>

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

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

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

Δημοσ.

Καλημέρα

 

Σιγουρέψου ότι η σελίδα στο browser που βλέπεις τα αποτελέσματα έχει σωστή δομή HTML και οπωσδήποτε στο <head> βάζεις το

><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

κάνε κάτι του στύλ

>
<html>
      <head>
           <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      </head>
  <body>
       <?php
           //το php script που έχεις
       ?>
  </body>
</html>

Έχω υλοποιήσει περίπου αυτό. Απλά δεν το έχω σε utf-8 αλλα windows-143 αν θυμάμαι καλά. Και ο λόγος είναι γτ έτσι ήταν και η σελίδα απο την οποία έτρεξα το curl. :/

Δημοσ.

Τελικά χρησιμοποιώντας αυτό:

>/<td colspan="2" valign="top" class="topBorderLight">\([^0-9]+([0-9]+)\)[^<]+<span class="redfonts" \/><\/td>/'

δουλεύει μια χαρά :)

 

Οπότε και οι 2 τρόποι είναι κομπλε τώρα :)

Δημοσ.

Ωστόσο, υπάρχει ένα μικρό κόλλημα. Εγώ θέλω τελικά να έχω έναν πίνακα με

>COURSE | ID | DM | ECTS | GRADE

 

Το course είναι ψιλοστανταρ οπότε μπορώ να το συμπληρώσω με το χέρι. Πάει η μία στήλη :) Έπειτα το ID μπορώ να το συμπληρώσω και αυτό με το χέρι.

 

Τώρα θέλω να προσθέσω και τα υπόλοιπα και όπως φαίνεται είναι ο ίδιος τρόπος σε όλα. Υπάρχει καμία ευκολία στην PHP σχετικά με αντιγραφή συνένωση πινάκων η κάτι παρόμοιο? :/ Θα ήθελα έναν εύκολο και γρήγορο τρόπο :) Στην χειρότερη περίπτωση θα το κάνω κλασικά παραδοσιακά με σκανάρισμα κτλ :P

 

Ας ανανεώσουμε την όλη συζήτηση με:

>
$grades_data = curl_exec($login);
			curl_close($login);
			echo $grades_data;
			
			// κωδικός μαθήματος
			preg_match_all('/<td colspan="2" valign="top" class="topBorderLight">\([^0-9]+([0-9]+)\)[^<]+<span class="redfonts" \/><\/td>/', $grades_data, $matches);
			// προσθήκη κωδικού στον τελικό πίνακα μας
			foreach($matches as $m) {
				$data[0] = $matches[1];
			}

			// βαθμοί και διδακτική μονάδα
			preg_match_all('/<td valign="top" class="topBorderLight"> ([0-9])<\/td><td valign="top" class="topBorderLight">[0-9]<\/td><td valign="top" class="topBorderLight"> [0-9]<\/td><td valign="top" class="topBorderLight"><span class="redFonts">(10|[0-9]|-)<\/span><\/td>/', $grades_data, $matches2);

			$i=0;
			foreach($matches2 as $m) {
				$data[2] = $matches2[1];
				$data[3] = $matches2[2];
				$i++;
			}
			
			foreach($matches as $m1) {
				
				echo '<textarea rows="30" cols="100">';
       				print_r($m1);
       				echo '</textarea>';
			}
			foreach($matches2 as $m2) {
				echo '<textarea rows="30" cols="100">';
       				print_r($m2);
       				
       				echo '</textarea>';
			}
			
		?>
		<h3>University Courses</h3>
		<hr> <br>
		
		<h4>Term A</h4>
		<table>
			<tr>
				<td><b>Course</b></td>
				<td><b>ID<b/></td>
				<td><b>Grade<b/></td>
			</tr>
			<tr>
				<td class="course" >Applied Linear Algebra</td>
				<td class="id" >CS104</td>
				<td class="grade" ><?php echo $data[3][0]; ?></td>
			</tr>
			<tr>
				<td class="course" >Calculus I</td>
				<td class="id" >CS105</td>
				<td class="grade" ><?php echo $data[3][1]; ?></td>
			</tr>
			<tr>
				<td class="course" >Introduction to Programming</td>
				<td class="id" >CS106</td>
				<td class="grade" ><?php echo $data[3][2]; ?></td>
			</tr>
			<tr>
				<td class="course" >Introduction to Computers</td>
				<td class="id" >CS108</td>
				<td class="grade" ><?php echo $data[3][3]; ?></td>
			</tr>
			<tr>
				<td class="course" >General Physics I</td>
				<td class="id" >CS109</td>
				<td class="grade" ><?php echo $data[3][4]; ?></td>
			</tr>
		</table> <br>

Δημοσ.

Η χρήση του foreach της δυο πρώτες φόρες είναι λανθασμένη.

 

Τώρα για αυτό που θες, τα δεδομένα μπορείς να τα πάρεις σε ένα preg_match_all, όπως παράδειγμα στο δεύτερο preg_match πήρες δυο δεδομένα. Είναι και πιο σωστό γιατί θα είναι αντιστοιχισμένα τα δεδομένα στο σωστό ΚΜ

 

Τέλος, σε προηγούμενο post, σου ανέφερα πως πρέπει να αλλάζεις γραμμή για κάθε <tr> για να σου βρίσκει όλα τα μαθήματα το regex. Άμα παρατηρήσεις πως κάποια μαθήματα δεν τα "πιάνει" το regex, βρες την εντολή που παρέθεσα και βάλε την αντίστοιχα στο σωστό σημείο!

Δημοσ.

Οκ, μπορεί στην αρχή να δυσκολευόμουν αλλα τώρα έχω μια Α άνεση. :) Δεν μου λες

Τέλος, σε προηγούμενο post, σου ανέφερα πως πρέπει να αλλάζεις γραμμή για κάθε <tr> για να σου βρίσκει όλα τα μαθήματα το regex. Άμα παρατηρήσεις πως κάποια μαθήματα δεν τα "πιάνει" το regex, βρες την εντολή που παρέθεσα και βάλε την αντίστοιχα στο σωστό σημείο!

γιατί πρέπει να το κάνω αυτό? Θυμάμαι πως γίνεται απλα θέλω να καταλάβω κιόλας. Δεν υποστήριζες ότι το string πρέπει να είναι έτσι ακριβως όπως έρχετε και να μην γίνει αλλαγή? :/

Δημοσ.

Κανονικά θα έπρεπε να δουλεύει, και να βρίσκει όλα τα μαθήματα. Για κάποιο λόγο όμως, όταν ο html κώδικας για δύο μαθήματα είναι στην ίδια γραμμή, "πιάνει" μόνο το ένα. Σαν προεπιλογή το preg_match_all δουλεύει γραμμή γραμμή, ίσως για αυτό. Βολεύει όμως που είναι γραμμή γραμμή, οπόταν απλά χρειάζεται να βάλεις μια αλλαγή γραμμής σε κάθε <tr> (σειρά στον html πίνακα που περιέχει μάθημα). Το ότι στα περισσότερα θα μπει διπλή αλλαγή γραμμής δεν σε επηρεάζει σε κάτι!

 

Ελπίζω να το εξήγησα καλά!

Δημοσ.

Καλημέρα :) Έχω ένα πολύ όμορφο αποτέλεσμα:

>   [1] => Array
       (
           [0] => 109
           [1] => 105
           [2] => 106
           [3] => 104
           [4] => 108
           [5] => 111
           [6] => 201
           [7] => 205
           [8] => 208
           [9] => 210
           [10] => 209
           [11] => 211
           [12] => 301
           [13] => 302
           [14] => 304
           [15] => 307
           [16] => 409
           [17] => 401
           [18] => 402
           [19] => 407
           [20] => 405
           [21] => 501
           [22] => 509
           [23] => 508
           [24] => 065
           [25] => 904
           [26] => 606
           [27] => 604
       )

   [2] => Array
       (
           [0] =>   Γενική Φυσική Ι
           [1] =>   Απειροστικός Λογισμός Ι
           [2] =>   Εισαγωγή στον Προγραμματισμό
           [3] =>   Εφαρμοσμένη Γραμμική Άλγεβρα
           [4] =>   Εισαγωγή στους Η/Υ
           [5] =>   Αγγλικά Ι
           [6] =>   Γενική Φυσική ΙΙ
           [7] =>   Απειροστικός Λογισμός ΙΙ
           [8] =>   Προγραμματισμός σε C
           [9] =>   Διακριτά Μαθηματικά
           [10] =>   Ψηφιακή Σχεδιάση
           [11] =>   Αγγλικά ΙΙ
           [12] =>   Πιθανότητες
           [13] =>   Δομές Δεδομένων
           [14] =>   Αρχές Γλωσσών Προγραμματισμού
           [15] =>   Αρχιτεκτονική Υπολογιστών
           [16] =>   Αντικειμενοστρεφής Προγραμματισμός
           [17] =>   Εισαγωγή στην Αριθμητική Ανάλυση
           [18] =>   Σχεδίαση και Ανάλυση Αλγορίθμων
           [19] =>   Θεωρία Υπολογισμού
           [20] =>   Λειτουργικά Συστήματα
           [21] =>   Υπολογιστικά Μαθηματικά
           [22] =>   Σήματα και Συστήματα
           [23] =>   Βάσεις Δεδομένων
           [24] =>   Ασύρματα Δίκτυα
           [25] =>   ΠΡΑΚΤΙΚΗ
           [26] =>   Δίκτυα Υπολογιστών
           [27] =>   Τεχνητή Νοημοσύνη
       )

   [3] => Array
       (
           [0] =>  4
           [1] =>  5
           [2] =>  5
           [3] =>  5
           [4] =>  5
           [5] =>  0
           [6] =>  5
           [7] =>  5
           [8] =>  5
           [9] =>  5
           [10] =>  4
           [11] =>  0
           [12] =>  5
           [13] =>  5
           [14] =>  4
           [15] =>  5
           [16] =>  4
           [17] =>  5
           [18] =>  5
           [19] =>  4
           [20] =>  5
           [21] =>  4
           [22] =>  5
           [23] =>  5
           [24] =>  4
           [25] =>  1
           [26] =>  5
           [27] =>  4
       )

   [4] => Array
       (
           [0] => 4
           [1] => 5
           [2] => 5
           [3] => 5
           [4] => 5
           [5] => 1
           [6] => 5
           [7] => 5
           [8] => 5
           [9] => 5
           [10] => 4
           [11] => 1
           [12] => 5
           [13] => 6
           [14] => 5
           [15] => 6
           [16] => 5
           [17] => 6
           [18] => 6
           [19] => 5
           [20] => 6
           [21] => 5
           [22] => 6
           [23] => 6
           [24] => 5
           [25] => 1
           [26] => 6
           [27] => 5
       )

   [5] => Array
       (
           [0] =>  5
           [1] =>  5
           [2] =>  7
           [3] =>  6.5
           [4] =>  6.5
           [5] =>  0
           [6] =>  5
           [7] =>  5
           [8] =>  7
           [9] =>  7
           [10] =>  6
           [11] =>  0
           [12] =>  6
           [13] =>  6
           [14] =>  6
           [15] =>  6
           [16] =>  6
           [17] =>  7
           [18] =>  8
           [19] =>  7
           [20] =>  8
           [21] =>  8
           [22] =>  8
           [23] =>  8
           [24] =>  6
           [25] =>  6
           [26] =>  8
           [27] =>  8
       )

   [6] => Array
       (
           [0] => 6
           [1] => 8
           [2] => 7
           [3] => 5
           [4] => 7
           [5] => 6
           [6] => 8
           [7] => 5,5
           [8] => 5
           [9] => 7
           [10] => 0
           [11] => 7
           [12] => 5,5
           [13] => 2
           [14] => 7,5
           [15] => 7
           [16] => -
           [17] => -
           [18] => 7
           [19] => -
           [20] => -
           [21] => -
           [22] => 7
           [23] => 7
           [24] => 1,5
           [25] => 10
           [26] => -
           [27] => -
       )

 

Απο εκεί και πέρα προσπαθώ να κάνω

><table>
				<?php for($i=0; $i<$length; $i++) { ?>
					<tr>
						<td><?php echo $matches[2][$i]; ?></td>
						<td><? //php echo $matches[0][$i]; ?></td>
						<td><? //php echo $matches[0][$i]; ?></td>
						<td><? //php echo $matches[2][$i]; ?></td>						
						<td><? //php echo $matches[3][$i]; ?></td>
					</tr>
				<?php } ?>
			</table>

 

και το $length το παίρνω απο εδώ:

>if(preg_match_all('/<td colspan="2" valign="top" class="topBorderLight">\([^0-9]+([0-9]+)\)(.*)<span class="redfonts" \/><\/td><td valign="top" class="topBorderLight">.*<\/td><td valign="top" class="topBorderLight">( [0-9]|[0-9]|[0-9].[0-9]| [0-9].[0-9]|[0-9],[0-9]| [0-9],[0-9])<\/td><td valign="top" class="topBorderLight">( [0-9]|[0-9]|[0-9].[0-9]| [0-9].[0-9]|[0-9],[0-9]| [0-9],[0-9])<\/td><td valign="top" class="topBorderLight">( [0-9]|[0-9]|[0-9].[0-9]| [0-9].[0-9]|[0-9],[0-9]| [0-9],[0-9])<\/td><td valign="top" class="topBorderLight"><span class="redFonts">( [0-9]|[0-9]|[0-9].[0-9]| [0-9].[0-9]|[0-9],[0-9]| [0-9],[0-9]|.|[0-9]{2})<\/span><\/td>/', $grades_data, $matches)) {
				//εκτυπώνω το αποτέλεσμα, απλά για να δω τι μορφή έχει ο πίνακας 
      					echo '<textarea rows="1000" cols="100">';
       				print_r($matches);
       				echo '</textarea>';
       			}else {
			        echo 'Huston we have a problem!';
			}
			$length = count($matches);

 

όπως βλέπετε θα έπρεπε να είσαι 28 αλλα είναι 5 αν δεν κάνω λάθος. :/ Γιατί δεν μου το μετράει σωστά το length? :/

 

:-D

 

1. ο πίνακας είναι $matches[x] όχι $matches

2. I need sleep... παω να την πεσω :P Καληνύχτα!

Δημοσ.

Επιτέλους!!!

 

Έτσι πληροφοριακά και για λόγους πληρότητας, κάθε πίνακα, όπως ο $matches, μπορείς να τον προσπελάσεις στην php και με αυτό, τον βολικό τρόπο (χωρίς να θες length και counter!):

 

>
foreach ($matches[1] AS $key => $value) {
   echo $matches[2][$key];
   echo $matches[3][$key];
   ...
}

Όπου διαβαίνει στοιχείο - στοιχείο και θέτει το $key με το κλειδί και είναι το αντίστοιχο $i στον δικό σου κώδικα, και στο value η τιμή του στοιχείου (αν και έχοντας το κλειδί, δεν την χρησιμοποιούμε γιατί ανταποκρίνεται στην μια στήλη μόνο των δεδομένων)

 

Τώρα αν πρόκειται για απλό πίνακα (π.χ. έχει τις μέρες της βδομάδας) τότε μπορείς απλά να γράψεις:

>
foreach ($weekdays AS $day) {
   echo $day;
}

 

:)

Δημοσ.

Πρόβλημα! Ενώ σε linux τρέχει τέλεια όταν προσπαθώ να το τρέξω σε windows server εμφανίζει

><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<!-- Created by billy tziv -->
<html>

<head>
<meta name="description" content="Linux Interface">
<meta name="author" content="PosCore">
<meta name="keywords" content="My linux interface">

<!--<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>-->
<meta http-equiv="Content-Type" content="text/html; charset=windows-1253">
<link rel="stylesheet" type="text/css" href="style2.css" />
</head> 
<body>
<div id="main">
	<div id="menu">
		<ul id="menu_ul">
			<li id="menu_li"> <a id="menu_button" href="../index.html"> Home </a> </li>
			<li id="menu_li"> <a id="menu_button" href="../tools.php"> Tools </a> </li>
			<li id="menu_li"> <a id="menu_button" href="../about.html"> About </a> </li>
			<li id="menu_li"> <a id="menu_button" href="../links.html"> Links </a></li>
			<li id="menu_li"> <a id="menu_button" href="../contact.html"> Contact </a></li>
		</ul>
	</div>
<!--
	<div id="gadgets">
		<img height=60px, width=60px, src="images/twitter.png"></img><br>
		<img height=60px, width=60px, src="images/facebook.png"></img>
	</div>
-->	
	<div id="content">

Στην ουσία εμφανίζει μια λευκή σελίδα. Το κόβει στο content και δεν ξέρω γιατί. Δεν μπορεί να διαβάσει κώδικα php... :/ Το έχει ξανασυναντήσει κανείς αυτό? :/

Δημοσ.

Το script με τον curl τρέχεις;

 

Καταρχήν ενεργοποίησε το error reporting της php για να δεις τι γίνεται. Το πιο πιθανό κάποιο σφάλμα συμβαίνει, και δεν στο εκτυπώνει λόγο ρυθμίσεων. Ξεκινάει και εκτυπώνει html και μετά στο php υπάρχει κάποιο σφάλμα.

Δημοσ.

Α ναι... :(

>Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\...

 

Πείσμα, και πάω να βρώ τρόπο να εγκαταστήσω την βλακο-βιβλιοθήκη :P

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

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

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

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

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

Σύνδεση

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

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

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