m5laser Posted February 21, 2010 Share Posted February 21, 2010 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! Link to comment https://forums.phpfreaks.com/topic/192822-matching-between-tags-why-is-this-code-acting-greedy/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.