PHP Regex Help for parsing String
I have a string such as the following:
Are you looking for a quality real estate company?
<s>Josh's real estate firm specializes in helping people find homes from
[city][State].</s>
<s>Josh's real estate company is a boutique real estate firm serving clients
locally.</s>
In [city][state] I am sure you know how difficult it is
to find a great home, but we work closely with you to give you exactly
what you need
I would like to have this paragraph split into an array based on the <s> </s>
tags, so I have the following array as the result:
[0] Are you looking for a quality real estate company?
[1] Josh's real estate firm
specializes in helping people find homes from [city][State].
[2] Josh's real estate company is a boutique real estate firm serving clients
locally.
[3] In [city][state] I am sure you know how difficult it is
to find a great home, but we work closely with you to give you exactly
what you need
This is a regex i'm currently using:
$matches = array();
preg_match_all(":<s>(.*?)</s>:is", $string, $matches);
$result = $matches[1];
print_r($result);
But this one only returns an array conta开发者_C百科ining the text found between <s> </s>
tags, it ignores the text found before and after these tags. (In the example above it would only return the array elements 1 and 2.
Any ideas?
The closest I could get was using preg_split()
instead:
$string = <<< STR
Are you looking for a quality real estate company? <s>Josh's real estate firm
specializes in helping people find homes from [city][State].</s>
<s>Josh's real estate company is a boutique real estate firm serving clients
locally.</s> In [city][state] I am sure you know how difficult it is
to find a great home, but we work closely with you to give you exactly
what you need
STR;
print_r(preg_split(':</?s>:is', $string));
And got this output:
Array
(
[0] => Are you looking for a quality real estate company?
[1] => Josh's real estate firm
specializes in helping people find homes from [city][State].
[2] =>
[3] => Josh's real estate company is a boutique real estate firm serving clients
locally.
[4] => In [city][state] I am sure you know how difficult it is
to find a great home, but we work closely with you to give you exactly
what you need
)
Except that produces an extra array element (index 2
) where there's a newline between the fragments [city][State].</s>
and <s>Josh's real estate company
.
It'd be trivial to add some code to remove the whitespace matches though, but I'm not sure if you desire that.
I suggest you look into DOM http://php.net/manual/en/book.dom.php
精彩评论