This has worked for me:
$regex = '#(<div[^>]+id="cpanel">.*?)'.
'(<div
style="float:left;">.*<div[^>]+class="icon">.*?</div>.*?</div>)+'. // note
the question mark next to + quantifier is removed
'(.*?</div>.*?</td>)#ism'; //instead the first .*? becomes
greedy
Ken
----- Original Message -----
From: "Jochen Daum" <[email protected]>
To: <[email protected]>
Sent: Thursday, July 16, 2009 12:53 PM
Subject: [phpug] Re: make specific regex part greedy
Hi Stig,
On Thu, Jul 16, 2009 at 12:35 PM, Stig Manning<[email protected]> wrote:
>
> Hi Jochen,
>
> Can you provide some example text that contains matches? (and the
> correct match)
>
> Might help us find a solution,
>
Please see below (its from the Joomla control panel)
<div id="cpanel">
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_content&task=add">
<img
src="/administrator/templates/khepri/images/header/icon-48-article-add.png"
alt="Add New Article" /> <span>Add New Article</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a
href="index2.php?option=com_comprofiler&task=editPlugin&cid=501">
<img
src="/administrator/templates/khepri/images/header/icon-48-extension.png"
alt="Global Configuration" />
<span>Subscriptions</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="test">
<img
src="/administrator/templates/khepri/images/header/icon-48-extension.png"
alt="Global Configuration" />
<span>test</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_content">
<img src="/administrator/templates/khepri/images/header/icon-48-article.png"
alt="Article Manager" /> <span>Article Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_frontpage">
<img
src="/administrator/templates/khepri/images/header/icon-48-frontpage.png"
alt="Front Page Manager" /> <span>Front Page Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_sections&scope=content">
<img src="/administrator/templates/khepri/images/header/icon-48-section.png"
alt="Section Manager" /> <span>Section Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_categories&section=com_content">
<img
src="/administrator/templates/khepri/images/header/icon-48-category.png"
alt="Category Manager" /> <span>Category Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_media">
<img src="/administrator/templates/khepri/images/header/icon-48-media.png"
alt="Media Manager" /> <span>Media Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_menus">
<img src="/administrator/templates/khepri/images/header/icon-48-menumgr.png"
alt="Menu Manager" /> <span>Menu Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_languages&client=0">
<img
src="/administrator/templates/khepri/images/header/icon-48-language.png"
alt="Language Manager" /> <span>Language Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_users">
<img src="/administrator/templates/khepri/images/header/icon-48-user.png"
alt="User Manager" /> <span>User Manager</span></a>
</div>
</div>
<div style="float:left;">
<div class="icon">
<a href="index.php?option=com_config">
<img src="/administrator/templates/khepri/images/header/icon-48-config.png"
alt="Global Configuration" /> <span>Global
Configuration</span></a>
</div>
</div>
</div>
</td>
<td width="45%" valign="top">
Kind Regards,
Jochen Daum
Chief Automation Officer
Automatem Ltd
Phone: 09 630 3425
Mobile: 021 567 853
Email: [email protected]
Skype: jochendaum
Website: www.automatem.co.nz
http://twitter.com/automatem
http://www.xing.com/go/invite/3425509.181107
> Cheers,
> Stig
>
> Jochen Daum wrote, on 16/07/2009 10:01 AM:
>> The regex string is:
>>
>> $regex = '#(<div[^>]+id="cpanel">.*?)'.
>> '(<div style="float:left;">.*?<div
>> class="icon">.*?</div>.*?</div>)+'. //this needs to be greedy
>> '(.*?</div>.*?</td>)#ism' //instead the first .*? becomes greedy
>>
>>
>>
>> The 2nd line html elements repeat and I don't know how often. I'd like
>> to capture all of the repetition, currently it only captures the first
>> element.
>>
>> Any pointer of how to make the ()+ greedy?
>>
>>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
NZ PHP Users Group: http://groups.google.com/group/nzphpug
To post, send email to [email protected]
To unsubscribe, send email to
[email protected]
-~----------~----~----~----~------~----~------~--~---