Jump to content

PHP Get Contents And For Each Loop Line By Line


mcloan

Recommended Posts

I am trying to return some retail store loacations off a site from a store locator.  Each url I visit has multiple stores listed and I want to return each one.  Each store is in the following format on the page and I want to return name and address to a seperate variable.

name
address


So essenitally what I am doing is using $Contents = file_get_contents($URL);  to return the information and then looping line by line.  I have sucessfully returned the first line "name" no problem, but I am having trouble returning address.  As you will see in the below code the name field is easily identified by using strstr($Line, 'appro')), but the address line is not easily indentified.  What I was hoping to do with the address line is to use a counter that starts when the progam find a match for the name line.  Then when the counter counts each loop for the next four line (there is html on 4 lines after the name and the 5 line is the address line) I would know when the counter is 5 it will be on the address line and I can set this variable.

Hopefully that makes sense.  In a nutshell it is not working at all.  I think it may be the way the for each loop is working.  Can anyone offer some input?  Your help is much appreciated.


Here is the code I thought would work:

My logic here is once I get the contents I set a counter.  The counter would become 1 when it finds the first name on the page then the for each loop loops for four more line and the counter become 5 in which case I know to retrun address on that line.

[code]
<?php

$URL = "http://www.mysite.com/92880/";

$Contents = file_get_contents($URL);

$Lines = preg_split("/\n/",$Contents);

$counter=0;
$strTag="False";
foreach($Lines as $Line)
{


if (strstr($Line, 'appro')) // Found Name Match and set $strTag="True";  (this is working fine)

{
$strTag="True";
$dealername=$Line;
echo $dealername;
}


If ($strTag="True") // If found a name match for each loop after this line it increases counter by 1
{

$counter=$counter+1;
}

if ($counter=5)  // If counter is 5 set address variable since this should be the address line.  (this part is not working)
{
$address=$Line;
echo $address;
$strTag="False";
$counter=0;
}


}
?>

[/code]
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

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.   Restore formatting

  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.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.