Jump to content

Matching between <tr> tags - why is this code acting greedy?


m5laser

Recommended Posts

Intended Usage:

Read a HTML table and return everything between the <tr> tags if one of the words "bedroom/studio/penthouse" is present.

 

Example:

$text = '
<table>
<tr>
<th>Unit Type</th>
<th>Availability</th>
<th>Rates</th>
</tr>

<tr>
<td><b>One Bedroom</b> </td>
<td><p>Call for Availability</p></td>
<td><p>$830-$855</p></td>
</tr>
</table>';
preg_match_all('/<tr>(.{0,200})(Bedroom|Studio|Penthouse)(.{0,200})<\/tr>/isU',$text,$match, PREG_SET_ORDER);
print_r($match);

 

The Problem:

For some reason the above code seems to be acting 'greedy' by returning non-matching <tr> tags. For example, $match[0][0] would return:

 

<tr>

<th>Unit Type</th>

<th>Availability</th>

<th>Rates*</th>

</tr>

 

<tr>

<td><b>One Bedroom</b> </td>

<td><p>Call for Availability</p></td>

 

<td><p>$830-$855</p></td>

</tr>

 

 

Any idea what I'm doing wrong? Any help would be GREATLY appreciated!

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.