On Sat, Feb 14, 2004 at 03:05:40AM +0800, Jason Wong wrote:
> $doo[1] = '<img src="dah.jpg">';
> $doo[2] = "<img src='doo.jpg'>";
>
> foreach ($doo as $dah) {
> if (preg_match('/<img src=["|\'](.*)\.(.*)["|\']>/i', $dah, $matches)) {
> print_r($matches);
> }
> }
Note that characters within square brackets don't need to have the | to
separate them; it's a character class, so it will match any character
within the brackets:
if (preg_match('/<img src=["\'](.*)\.(.*)["\']>/i', $dah, $matches)) {
Also, it's probably good to put a non-greedy modifier after the *s to
prevent .* from matching too much. Compare:
<?
$doo[1] = '<img src="dah.jpg"><img src="blah.jpg">';
$doo[2] = "<img src='doo.jpg'>";
foreach ($doo as $dah) {
if (preg_match('/<img src=["\'](.*)\.(.*)["\']>/i', $dah, $matches)) {
print_r($matches);
}
# adding ? after the *
if (preg_match('/<img src=["\'](.*?)\.(.*?)["\']>/ig', $dah, $matches)) {
print_r($matches);
}
}
?>
'Course, it still doesn't match multiple images in one line.
preg_match_all() could probably help out there.
joel
--
[ joel boonstra | gospelcom.net ]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php