Jump to content
php.lv forumi

Kā iegūt konkrētu mainīgo no file_get_contents?


reup

Recommended Posts

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š!

Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

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ā?

 

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

$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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...