Jo, det drejer egentligt om det jeg allerede har nævnt mht. parenteserne.
Hvis vi lige starter med en modifiseret version af et af dine oprindelige eksempler:
$linje = preg_replace('/<a href="(\S+)"><img src="(\S+)"><\/a>/', 'URL: $1 :: Image: $2', $linje);
Som nævnt er ideen med paranteserne, at man ønsker at huske det der står inden i dem til senere. Her er det altså det som står i href'en og det som står i src'en der skjal huskes. Siden at der er to parenteser, behøver vi dog en mekanisme til at skelne mellem det der står i den første parentes og det der står i den anden. Det er derfor at det hedder $1, for indholdet af den første, og $2 for indholdet af den anden parentes.
Hvis vi nu putter denne her:
$linje = '<a href="
http://www.eksperten.dk"><img src="
http://www.eksperten.dk/img/elogo.png"></a>';- igennem den ovenstående preg_replace får vi derfor dette:
$linje = 'URL:
http://www.eksperten.dk :: Image:
http://www.eksperten.dk/img/elogo.png';Jeg håber på at det var forståligt?
Men altså, for at vi skal kunne skelne mellem indholdet af den 1., 2., 3., ... parentes, så hedder det $1, $2, $3, ... osv.
I mange tilfælde har vi imidlertid kun en parentes, og derfor vil det der også kun være den første, $1, som man ser der. Ser man f.eks. på såkaldt BB-kode, vil man f.eks. kunne se sådan noget som i dit eksempel:
blah-blah
http://www.eksperten.dk/img/elogo.png blah-blah
... og dette skal så laves om til:
blah-blah <img src="
http://www.eksperten.dk/img/elogo.png"> blah-blah
Dette kan man så gøre med en preg_replace, som kunne se nogenlunde sådan her ud:
$linje = preg_replace('[/img]!g', '<img src="$1">', $linje);
Denne fungere ved at det vi finder imellem parenteserne, altså "
http://www.eksperten.dk/img/elogo.png", bliver indsat i src'en.