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&amp;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&amp;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&amp;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&amp;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]
-~----------~----~----~----~------~----~------~--~---

Reply via email to