reup Posted August 20, 2013 Report Share Posted August 20, 2013 Labs vakars! Pavisam nesen sāku apgūt programmēšanu "for fun" un pašlaik esmu nedaudz iestrēdzis pie "file_get_contents" - respektīvi, man nesanāk izvilkt no file_get_contents outputa vajadzīgos datus, kurus vēlos definēt par mainīgajiem lielumiem (variables). Ceru ka kāds varēs izlīdzēt.. Sākumā lietoju: $content = file_get_contents("https://website.com/contentId=445"); //paraugs linkam Un kā lai es iegūstu Value #1 un Value #2, kuru esmu ieguvis no $content, lai šīs vērtības varētu izmantot kā $mainīgais1 un $mainīgais2? (zemāk outputs): <span id="the_span_id1" class="">Value #1:</span> <strong> <span class="price"> 999.11 USD </span> </strong> <br/> <span id="the_span_id2" class="">Value #2:</span> <span class="price"> 111.11 USD </span> Visādi izgooglējos un izdevās atrast līdzīgus jautājumus, bet nesanāca sekmīgi palaist rekomendētos kodus manā outputā.. Ceru ka kāds varēs palīdzēt. Paldies jau iepriekš! Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 20, 2013 Report Share Posted August 20, 2013 Tev vajag noparsēt HTML. Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2013 Report Share Posted August 20, 2013 (edited) http://ideone.com/sWvl2L <?php $html=<<<AAA <span id="the_span_id1" class="">Value #1:</span> <strong> <span class="price"> 999.11 USD </span> </strong> <br/> <span id="the_span_id2" class="">Value #2:</span> <span class="price"> 111.11 USD </span>" AAA; $dom = new domDocument; $dom->loadHTML($html); $mainīgais1 = $dom->getElementById('the_span_id1')->nodeValue; $mainīgais2 = $dom->getElementById('the_span_id2')->nodeValue; echo $mainīgais1."\n"; echo $mainīgais2; vai http://code.google.com/p/phpquery/ vai Edited August 20, 2013 by codez Quote Link to comment Share on other sites More sharing options...
reup Posted August 20, 2013 Author Report Share Posted August 20, 2013 Super, paldies, izdevās! Nemaz par parsāciju nebiju lietas kursā (tik tālu vēl neesmu ticis). Pēc līdzīgas analoģijas centos izvilkt arī sekojošās vērtības <span class="price"> 999.11 USD </span> ar output "999.11", vai vismaz "999.11 USD" un <span class="price"> 111.11 USD </span> ar output "111.11", vai "111.11 USD" bet izskatās ka parsācija neatbalsta contenta izvilkšanu no klases (class)? Naivuma vadīts centos to klasi izviklt ar getElementsByTagName, bet tas neizdevās.. Kādu metodi varētu piemērot šajā gadījumā? Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2013 Report Share Posted August 20, 2013 Pēti dokumentāciju: http://php.net/manual/en/class.domdocument.php Quote Link to comment Share on other sites More sharing options...
reup Posted August 21, 2013 Author Report Share Posted August 21, 2013 Ok, paldies par norādēm pareizajā virzienā! Centīšos saprast kā lai tiek arī pie šiem mainīgajiem! Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 21, 2013 Report Share Posted August 21, 2013 Lai būtu precīzi, tie nav mainīgie. Tās ir vērtības. Tad kad tu vērtības būsi piešķīris mainīgajiem, tad mainīgie saturēs vērtības. Mainīgie, jo vērtība, kas ir piešķirta mainīgajam, var mainīties. Quote Link to comment Share on other sites More sharing options...
reup Posted August 21, 2013 Author Report Share Posted August 21, 2013 Paldies par korekcijām! Quote Link to comment Share on other sites More sharing options...
gurkjis Posted August 21, 2013 Report Share Posted August 21, 2013 pats šādiem gadījumiem izmantoju: http://simplehtmldom.sourceforge.net/ Jo var lietot jquery tipa selektorus. Quote Link to comment Share on other sites More sharing options...
webi Posted August 21, 2013 Report Share Posted August 21, 2013 +1Arī izmantoju minēto klasi.Brīžiem gan gribas, lai dati parsētos ātrāk. pats šādiem gadījumiem izmantoju: http://simplehtmldom.sourceforge.net/ Jo var lietot jquery tipa selektorus. Quote Link to comment Share on other sites More sharing options...
vitalja Posted August 27, 2013 Report Share Posted August 27, 2013 $content = file_get_contents("https://website.com/contentId=445"); $content kļust par string, no stringa ātrākais veidz kautko izvilkt ir ar regex komandām izmantojot, piemēram, funkciju preg_match_all http://php.net/manual/en/function.preg-match-all.php konkrētajā gadijumā <span id="the_span_id1" class="">Value #1:</span> <strong> <span class="price"> 999.11 USD </span> </strong> <br/> <span id="the_span_id2" class="">Value #2:</span> preg_match_all('#class="">(.+?)</span#', $content, $matches); // $matches ir divdimensiāls masīvs kurā tiks uzglabāts tavs pieprasijums. iespējams, var rasties problēmas ar to ka tev ir break line starp Value un #2.,bet no line break un liekām atstarpēm var tikt vaļā ar str_replace Quote Link to comment Share on other sites More sharing options...
jurchiks Posted August 27, 2013 Report Share Posted August 27, 2013 http://regex.info/blog/2006-09-15/247 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.