/ 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 : Christian


Dato : 08-07-03 12:41

I nedenstående string ønsker jeg at indsætte den fulde URL til de
to billeder.

$string="<img scr='best.gif'><img src=best.gif>";
$URL="http://www.x.com";

Det første billede klare jeg fint med følge udtryk
$string = ereg_replace("src=+[']","src='$URL", $string);

Jeg forsøger at klare det næste billede med
$string = ereg_replace("src=+[^']","src='$URL", $string);

Men den "spiser" et tegn for meget. Resultat
$string = <... src=http://www.x.com/est.gif>
Bemærk at b'et mangler i best.

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

 
 
Thomas Lindgaard (08-07-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 08-07-03 22:29

Christian <christian@discoworld.dk> wrote in news:beeaju$dm8$1
@sunsite.dk:

> I nedenst†ende string ›nsker jeg at inds‘tte den fulde URL til de
> to billeder.
>
> $string="<img scr='best.gif'><img src=best.gif>";
> $URL="http://www.x.com";

Du vil gerne matche

strengen "src="

efterfulgt af

valgfrit gåseøje

efterfulgt af

filnavn

evt. efterfulgt af

gåseøje (hvis der var et før filnavnet)

Derfor skal dit regulære udtryk sige præcis det :) ... og det gør det
følgende:

"src=('?)([a-z0-9._\-]+)\\1"

Det regulære udtryk gør følgende:
1) Først matches strengen "src="
2) Så _må_ der komme en ' men den er ikke påkrævet
3) Så kommer et filnavn som må bestå af småbogstaver, tal, punktum,
underscore og bindestreg
4) Endelig komme det samme tegn som blev matchet i 2)! (\\1 henviser til
det der blev matchet af udtrykket i første parentes)

Her er hele koden:
<?php

$string="<img src='best.gif'><img src=best.gif>";
print 'Før: '.htmlentities($string).'<br>';
$URL="http://www.x.com";

$string = preg_replace(
"/src=('?)([a-z0-9._\-]+)\\1/",
"src='$URL/\\2'",
$string
);
print 'Efter: '.htmlentities($string);
   
print '<hr>';
show_source(__FILE__);
   
?>

.... og så lige en reference:

http://dk2.php.net/manual/en/pcre.pattern.syntax.php

--
Hyggehej
/Thomas

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

Månedens bedste
Årets bedste
Sidste års bedste