Jim Lucas wrote:
[EMAIL PROTECTED] wrote:
I am having a issue parsing an html file.
I want to pull all the data between two html tags.

Problem I am having is that no matter what I try I can pull either tag or
both but not the data in between.

<div class="record" id="one">

                <div class="rideon">

                                <h2>

                                                <span>Welcome to
Rideon</span>

                                </h2>

                </div>

</div>

</div class="record" id="one">

function datamatch($document)

{

                preg_match_all('/<div class="record" [^<>]*>(.*)/<\/div
class="record" [^<>]*>/i',$document,$elements);

$match = implode("\r\n",$elements[0]);

return $match;

}

This should return the following

<div class="record" id="one">

                <div class="rideon">

                                <h2>

                                                <span>Welcome to
Rideon</span>

                                </h2>

                </div>

</div>

</div class="record" id="one">



<plaintext><?php

$data = '

<div class="record" id="one"><div class="rideon"><h2><span>Welcome to Rideon #1</span></h2></div></div> <div class="record" id="two"><div class="rideon"><h2><span>Welcome to Rideon #2</span></h2></div></div> <div class="record" id="three"><div class="rideon"><h2><span>Welcome to Rideon #3</span></h2></div></div> <div class="record" id="four"><div class="rideon"><h2><span>Welcome to Rideon #4</span></h2></div></div>

';

if ( preg_match_all('!<div class="record" id="([^"]+)"><div class="rideon"><h2><span>([^<]+)</span></h2></div></div>!', $data, $matches, PREG_SET_ORDER) ) {
    print_r($matches);
} else {
    echo 'Could not match anything.';
}




I just realized a problem with this code.

You have tabs/spaces/new lines between your different tags, so my regx needs a 
little modification

Try this instead:

<plaintext><?php

$data = '

<div class="record" id="one">
        <div class="rideon">
                <h2><span>Welcome to Rideon #1</span></h2>
        </div>
</div>
<div class="record" id="two">
        <div class="rideon">
                <h2><span>Welcome to Rideon #2</span></h2>
        </div>
</div>
<div class="record" id="three">
        <div class="rideon">
                <h2><span>Welcome to Rideon #3</span></h2>
        </div>
</div>
<div class="record" id="four">
        <div class="rideon">
                <h2><span>Welcome to Rideon #4</span></h2>
        </div>
</div>

';

if ( preg_match_all('!<div class="record" id="([^"]+)">\s*<div class="rideon">\s*<h2>\s*<span>([^<]+)</span>\s*</h2>\s*</div>\s*</div>!', $data, $matches, PREG_SET_ORDER) ) {
        print_r($matches);
} else {
        echo 'Could not match anything.';
}



--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
       and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
    by William Shakespeare

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to