I'll have code embedded in HTML, it will look something like this:
<div id="someDiv">
{:
HTMLObject
id: form
background: blue
font: large
fields [
username: usr
password: pwd
]
foo: bar
:}
</div>
I am trying to write a regular expression that will take these HTMLObjects and break them into manageable arrays. I already have the regexp that will do the lines such as
id: form
However, I'm having trouble with making the regexp also match ones like
fields [
username: usr
password: pwd
]
Here is the function I have that performs these tasks:
function parseHTMLObjects($html) {
$details = preg_replace('/[{:]([^}]+):}/i', '$1', $html);
$details = trim(str_replace('HTMLObject', '', $details));
$dynamPattern = '/([^\[]+)\[([^\]]+)]/';
$dynamMatch = preg_match_all($dynamPattern, $details, $dynamMatches);
print_r($dynamMatches); // nothing is shown here
$findMatch = preg_match_all('/([^:]+):([^
]+)/', $details, $matches);
$obs = array();
foreach($matches[0] as $o) {
$tmp = trim($o);
echo $tmp . "
";
}
}
When I pass an HTML string like I demonstrated at the beginning of the page, the $findMatch
regexp works fine, but nothing gets stored in the dynams one. Am I going about this in the wrong way?
Basically all I need is each object stored in an array, so from the sample HTML string above, this would be an ideal array:
Array() {
[0] => id: form
[1] => background: blue
[2] => font: large
[3] => fields [
username: usr
password: pwd
]
[4] => foo: bar
}
I have all the sorting and manipulation handled beyond that point, but like I said, I'm having trouble getting the same regexp that handles the colon style objects to also handle the bracket style objects.
If I need to use a different regexp and store the results in a different array that is fine too.