Slammer Posted September 10, 2006 Report Share Posted September 10, 2006 Galīgi nejēdzu preg_match funkciju. Es gribu dabūt datus no html iegūta koda caur fsockopen. Attiecīgi gribu iegūt datus 18.89, 187.60 GB, 9.93 GB. Šie dati, kā jūs saprotat - mainās. <FONT color=#1900d1>Share Ratio:</FONT><FONT color=#000000>18.89</FONT> <FONT color=green>Upload:</FONT><FONT color=black>187.60 GB</FONT> <FONT color=darkred>Download:</FONT> <FONT color=black>9.93 GB</FONT> Gribētos arī uzzināt ko katrs preg_match elements (ja tā var teikt) dara, piem.: >, ^, ?, *, +, @ utml. Kur es to varu apskatīties? It kā iekš php.net neatradu. Paldies. Link to comment Share on other sites More sharing options...
bubu Posted September 10, 2006 Report Share Posted September 10, 2006 Slikti meklēji: http://lv.php.net/manual/en/ref.pcre.php http://lv.php.net/manual/en/reference.pcre...n.modifiers.php http://lv.php.net/manual/en/reference.pcre...tern.syntax.php Tavā gadījumā grūti pateikt, kas līdzēs, jo nevar redzēt visu vajadzīgot tekstu, bet nu sākt vari ar šo te, un pielabot pēc vajadzības: $all_text = "<FONT .... "; //tavs htmls $txt = array("Share Ratio", "Upload", "Download"); foreach ($txt as $t) { if (preg_match_all("@$t:</FONT>\\s*<FONT color=(?:#0{6}|black)>([^<]+)</FONT>@m", $all_text, $m)) { echo $t, "=", $m[1][0], "\n"; } } Link to comment Share on other sites More sharing options...
Slammer Posted September 10, 2006 Author Report Share Posted September 10, 2006 (edited) Uzreiz laikam vajadzēja dot savādāk. Ir tāds izteiciens: preg_match("/<td class=\"rowhead\">Uploaded<\/td><td align=\"left\">(\d*\.?\d* ..) \(\d*\.?\d* ..\/day\)<\/td>/U",$profile,$matches); Šajās rindās atrod: <TD class=rowhead>Uploaded</TD> <TD align=left>34.36 GB (98.01 MB/day)</TD></TR> Šajās rindās neatrod: <TD class=rowhead>Upload</TD> <TD align=left>187.92 GB</TD></TR> Mēģināju mainīt izteicienu uz: preg_match("/<td class=\"rowhead\">Upload<\/td><td align=\"left\">(\d*\.?\d* ..)<\/td>/U",$profile,$matches); Un vienalga neatrod. Noteikti kaut ko nepareizi izmainīju.. Edited September 10, 2006 by Slammer Link to comment Share on other sites More sharing options...
bubu Posted September 10, 2006 Report Share Posted September 10, 2006 Nesaprotu kāpēc fgan pirmajam preg_match būtu jānostrādā, jo: 1) TD nav tas pats, kas td regexpā 2) htmlā "rowhead" nav pēdiņās, regexpā ir 3) htmlā "left" nav pēdiņās ir 4) starp </TD> pirmajā rindā un <TD> otrajā rindā ir enter, kas nav regexpā Kur tad nu vēl par otro runāt.. Vai tik tu nenodarbojies ar copy&paste, pavisam nesaprotot, ko kas nozīmē? Link to comment Share on other sites More sharing options...
Slammer Posted September 10, 2006 Author Report Share Posted September 10, 2006 (edited) 1) TD nav tas pats, kas td regexpā 2) htmlā "rowhead" nav pēdiņās, regexpā ir 3) htmlā "left" nav pēdiņās ir Lapas source tika parādīts tieši tāds, pieņemsim, ka es kļūdījos un trekeru sysopi paši no nulles kodē lapas.. 4) starp </TD> pirmajā rindā un <TD> otrajā rindā ir enter, kas nav regexpā Tagad zināšu ka likt nedrīkst kur pagadās.. Es gribēju zināt tikai vienu - ko nozīmē (\d*\.?\d* ..) latviski? Un te ir mana atbilde: ( - start subpattern \d - any decimal digit * - 0 or more quantifier . - match any character except newline (by default) ? - extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer ) - end subpattern Negribu vairāk jūs maldināt, tāpēc domāšu pats kas par vainu.. Edited September 10, 2006 by Slammer Link to comment Share on other sites More sharing options...
Recommended Posts