Hi Ed,
first example has been covered by others, so onto the next:
> Pulling a word between two other words without having to know what the
word
> is. For example, pulling whatever word displays between "the" and
> "sky". If the string was "the blue sky", the result would be the word
> blue. If the string were "the green sky", the result would be the word
green.
I don't quite understand what you mean by "pulling", but this example will:
1. Take out any words if they exist.
2. Store those removed words into an array for you to use later, should you
need to see what was taken out.
<?
$string = "Thse sun is often up when you look up in the blue sky. However,
the green sky often yields rain.";
echo "<b>Example 2</b><br>\n<i>Original string:</i> " . $string . "<br>\n";
if (preg_match_all("!the\s(.*?)\ssky!is", $string, $output))
{
// Use an array to store all the matches.
$saved = array();
for($i=0; $i<count($output[0]); $i++)
{
// Push the value of the match into an array.
array_push($saved, $output[1][$i]);
// Replace that same value from the string.
$string = str_replace($output[1][$i], "", $string);
}
}
else
{
$saved = "There were no matches found in the pattern.";
}
echo "<i>Replaced:</i> " . $string . "<br>\n<br>\n";
if (!is_array($saved))
{
echo $saved;
}
else
{
echo "The following words were taken out of the pattern:<br>\n";
for ($i=0; $i<count($saved); $i++)
{
echo $saved[$i] . "<br>\n";
}
}
?>
There's nothing complicated about the match:
preg_match_all() - see manual
! delimiters !
the - first word
\s - space
(.*?) - everything up to next (non greedy)
\s - space
sky - word
i - case insensitive
s - treat new lines (\n as .)
If you just want to rip stuff out, then you can use preg_replace():
$string = preg_replace("!(the)\s.*?(\ssky)!is", "$1$3", $string);
See the manual, or search these archives for further examples if you're
struggling.... Regexes (and when to use them) take a little getting used to,
but they're definitely worth learning :)
Hope it helps.
James
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php