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! Quote 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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.