|
Posted by Mike M on 05/27/05 04:16
Hi
I'm trying to extract from a line of HTML individual tags, using the "name"
attribute to determine which tag to extract. What I'm getting seems to be a
greedy match which isn't what I'm looking for.
// source html line with rubbish tag for testing purposes
$LS_HTML_LINE='<input type="text" value="456=tre" width=5 name="item_2"
blah=wer checked id="abc" />This is not to be included</a><input
type="checkbox" value="123=tre" name="item_1" checked />' ;
// regular expression to use
$LS_LOOK_FOR_MASK='!<[^/].*?\sname="item_1".*?>!' ;
// run the regular expression
preg_match($LS_LOOK_FOR, $LS_HTML_LINE, $LA_ALL_TAGS) ;
// lets see what we've got
print_r($LA_ALL_TAGS) ;
Array
(
[0] => <input type="text" value="456=tre" width=5 name="item_2" blah=wer
checked id="abc" />This is not to be included</a><input type="checkbox"
value="123=tre" name="item_1" checked />
)
This is not what I'm after, the desired result is :
<input type="checkbox" value="123=tre" name="item_1" checked />
but when I do the same for item_2 I get the desired result
$LS_LOOK_FOR_MASK='!<[^/].*?\sname="item_2".*?>!' ;
preg_match($LS_LOOK_FOR, $LS_HTML_LINE, $LA_ALL_TAGS) ;
print_r($LA_ALL_TAGS) ;
Array
(
[0] => <input type="text" value="456=tre" width=5 name="item_2" blah=wer
checked id="abc" />
)
This tells me that I'm missing something in the beginning of the regular
expression, I've spent several hours hacking to no effect and Googling
without seeing anything that seems to be what I'm after.
I think that it's time to throw this one out to those more proficient with
regular expressions. Any help would be greatly appreciated.
Cheers
Mike
[Back to original message]
|