reup Posted August 20, 2013 Report 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
codez Posted August 20, 2013 Report 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
reup Posted August 20, 2013 Author Report 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
codez Posted August 20, 2013 Report Posted August 20, 2013 Pēti dokumentāciju: http://php.net/manual/en/class.domdocument.php Quote
reup Posted August 21, 2013 Author Report Posted August 21, 2013 Ok, paldies par norādēm pareizajā virzienā! Centīšos saprast kā lai tiek arī pie šiem mainīgajiem! Quote
daGrevis Posted August 21, 2013 Report 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
gurkjis Posted August 21, 2013 Report Posted August 21, 2013 pats šādiem gadījumiem izmantoju: http://simplehtmldom.sourceforge.net/ Jo var lietot jquery tipa selektorus. Quote
webi Posted August 21, 2013 Report 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
vitalja Posted August 27, 2013 Report 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
jurchiks Posted August 27, 2013 Report Posted August 27, 2013 http://regex.info/blog/2006-09-15/247 Quote
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.