Solved

Can a regex be conditional (pickup this or that)

Posted on 2010-11-29
4
324 Views
Last Modified: 2012-05-10
I'm building a small application to allow me to gather sell price on ebay, I divided the script in 5 different preg_match_all section, one for each of the 5 data I want to pull

1) title
2) item number
3) bids
4) price
5) date

with the help of other Experts here I've been able to filter only the sold items, everything work pretty good but there are a few glitches and my script needs some fine tuning, here is an example;

             preg_match_all("'<td class=\"prc bidsold g-b\">(.*?)</td>'si", $source, $price_arr);
                         
         foreach($price_arr[1] as $price)
           {
                  echo "<tr><td><input type=\"text\" name=\"price[]\" size=\"10\" value=\"".$price."\"></td>";
           }
 
This script allows me to get the sold price of an item, the line to scrape look like this

<td class=\"bids\"><div class=\"bin1\">5 Bids</div><span class=\"sold\">Sold</span></td><td class=\"prc bidsold g-b\">$300.00</td><td class=\"tme  rt\">

But if the sellers offer free shipping than the line look like this

<td class=\"bids\"><div class=\"bin1\">1 Bid</div><span class=\"sold\">Sold</span></td><td class=\"prc\"><div class=\"bidsold g-b\">$10.76</div><span class=\"tfsp\">Free shipping</span></td><td class=\"tme  rt\">

As you can see the "prc bidsold g-b" that I used to find inside a td tag is now split, the "prc" part is still inside a td tag but the "bidsold g-b" is now inside a div tag.

So the question is how can I modify the preg_match_all regex to pickup both instance, I tried different approach and the best I could get was an empty cell in my return table, as it is I don't even get anything return if the seller offered free shipping.

If at all possible I'd like a detail explanation because I have a few other similar situation that I need to address (like if the title is bold I don't pick it up, but that is another question).

Thanks
0
Comment
Question by:gamebits
  • 3
4 Comments
 
LVL 74

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
Comment Utility
The simplest solution would probably be to just add a new condition for the separate scenario, using a vertical bar ( OR ) to separate the conditions. For the following, I just created a pattern to match the "free shipping" condition. It is pretty much the same as what you had before, just with <div> and the altered class attributes.
preg_match_all("'(?:<td class=\"prc bidsold g-b\">|<div class=\"bidsold g-b\">)(.*?)(?:</td>|</div>)'si", $source, $price_arr);

Open in new window

0
 
LVL 74

Expert Comment

by:käµfm³d 👽
Comment Utility
P.S.

The (?: ... ) is a non-capturing grouping construct used to provide an internal boundary for the OR condition.
0
 
LVL 28

Author Comment

by:gamebits
Comment Utility
Awesome, works perfect, are you up for more points, I can post 2 mores questions similar to this in the mean time you may want to have a look at my other question still open.
0
 
LVL 74

Expert Comment

by:käµfm³d 👽
Comment Utility
I'm always game to help out  :)
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
Both Easy and Powerful How easy is PHP? http://lmgtfy.com?q=how+easy+is+php (http://lmgtfy.com?q=how+easy+is+php)  Very easy.  It has been described as "a programming language even my grandmother can use." How powerful is PHP?  http://en.wikiped…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now