/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Regular expressions
Fra : Jesper


Dato : 21-06-05 18:36

Heyho

Jeg er ved at sidde og rode med regular expressions, og syntes lige det gik
så godt, men nu sidder jeg så fast:

Min tanke er at søge en side igennem for img-tags, men kun hvis der IKKE
står "http://" eller "www." foran deres src-attribut.

Altså så den finder: <img alt="En tekst" src="images/test.jpg"
height="30px">
Men ikke finder: <img alt="En tekst"
src="http://www.mysite.com/images/test.jpg" height="30px">

Min regular expression ser således ud indtil videre:
$pattern = '/<img ([^>]*)src="(http:\/\/)[^"]*)"([^>]*)>/';

Men den virker vist ikke (den tjekker jo så også kun for http:// nu), for
den finder ikke de rigtige.

Nogen, der har nogle ideer?

Mvh
Jesper



 
 
Mads Jensen (21-06-2005)
Kommentar
Fra : Mads Jensen


Dato : 21-06-05 20:27

"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

--
Mads Jensen - mail sent to address ends in /dev/null
s/spam/madsj for emailing me
gpg: 7E775BDA

It is impossible to make anything foolproof because fools are so
ingenious.

Thomas Lindgaard (21-06-2005)
Kommentar
Fra : Thomas Lindgaard


Dato : 21-06-05 21:23

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



Jeppe Bundsgaard (27-06-2005)
Kommentar
Fra : Jeppe Bundsgaard


Dato : 27-06-05 23:01

Thomas Lindgaard wrote in dk.edb.internet.webdesign.serverside.php:
> det
> er "[^(http://)(www\.)]", der betyder "som ikke starter med 'http://'
> eller 'www.'".
>
Hej Thomas og Jesper
Er du sikker på det, Thomas?
Så vidt jeg ved er [] en definition af en klasse - hvor ^ ganske rigtigt gør det
til en negativ klasse. Altså [^a-z01] betyder ikke bogstaverne a til z og ikke 0
og 1. Hvis jeg skulle lave en "ikke sådan en før" ville jeg bruge ?!:
src=[\"']?(?!http:\/\/)(.*?)[ \"'] - som altså finder src hvor der evt. er et
anførselstegn og derefter noget det ikke er http:// og derefter det der så er
src-en - afsluttet af mellemrum eller anførselstegn. Beskrivelsen af lookbehind
findes i sidste del af php-dokumentationens (www.php.net) udmærkede beskrivelse
af preg_syntax.
Mvh
jeppe


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste