On Tue, 21 Jun 2005 21:26:56 +0200, Mads Jensen wrote:
> "Jesper" <No@spam.4.me> writes:
> [snip]
>> Nogen, der har nogle ideer?
>
> Det ligner noget Perl eller PHP, så måske skulle du over i en anden
> gruppe. news:comp.perl.lang.misc (engelsk) er god til Perl, og der er
> rimelig gang i den danske PHP-gruppe, so er:
> news:dk.edb.internet.webdesign.serverside.php
Nu er vi jo i PHP-gruppen, så her kommer lige et svar... :)
<?php
$text =
'hejsa '.
'<img alt="fuldstændig sti" src="
http://en.server/et.billede"
height="42">'.
'der var engang en ost med blå fødder <img src="
www.feta.dk/billede">'.
'nyt billede <img src="images/migselvibadedragt.jpg"
alt="ikke noget kønt syn"> hejsa';
$pattern = '_<img.+src=([\'"])([^(
http://)|(www\.)].+)\\1.*>_Us';
preg_match_all($pattern, $text, $matches);
print $text;
print '<pre>';
print_r($matches);
print '</pre>';
?>
Meningen med det regulære udtryk er som følger:
1) Find "<img" efterfulgt af noget (der kommer i hvert fald et mellemrum)
2) Find "src=" efterfulgt af enten " eller ' (der SKAL være brugt en
eller to gæs i img-tagget)
3) Find noget som ikke starter med "http://" eller "
www." og som afsluttes
med samme gås som den fundet i 2)
4) Find resten af img-tagget hen til ">"
Det sidste "U" i $pattern gør, at vi ikke matcher på tværs af tags -
altså holder os inden for to matchende "<" og ">". Det sidste "s" gør,
at "." også matcher linieskift - det er vist nødvendigt efter, at jeg
har brudt eksemplet op i kortere linier.
HÃ¥ber du kan bruge det til noget - det er langt fra gennemtestet, men det
er "[^(
http://)|(www\.)]", der betyder "som ikke starter med 'http://'
eller '
www.'".
--
Mvh.
/Thomas