Selve min RegExp:
/[\w\W]*<h4>([\w\W]*)<\/h4>[\w\W]*/i
\w betyder ét eller andet word-tegn
\W betyder ét eller andet ikke-word-tegn
[\w\W]* betyder en serie af ingen eller flere tegn af de to slags
En slash (/) har en selvstændig betydning, så den skal escapes i </h4> - altså: <\/h4>
Så er der kun parentesen tilbage. En preg_replace tager tre argumenter:
1. Et RegExp-udtryk
2. En replace-streng
3. En streng, der skal søges i
Hvis du sætter en parentes i RegExp-udtrykket - som jeg har gjort omkring indholdet af vores h-tags - kan indholdet af den parentes bruges i replace-strengen i form af $1. Det er det, man kalder en back-reference.
Havde vi brugt to parenteser kunne jeg have refereret til indholdet af de to parenteser med henholdsvis $1 og $2. Prøv f.eks. denne:
$s = "jhk jhkj <i>hkjhk</i> jhk jhk <h4>En <u>overskrift</u></h4> jh kjhkjhk <b>jhk</b> jhkj hkjh kjhkj hkjh";
$header = preg_replace("/([\w\W]*)<h4>([\w\W]*)<\/h4>[\w\W]*/i", "Der stod:<br>$1<br>- før det første tag ... og:<br>$2<br>- imellem de to tags", $s);
print $header;
Håber, det hjalp lidt - og ellers er der lidt mere om RegExp-syntaksen her:
http://dk2.php.net/manual/da/reference.pcre.pattern.syntax.phpTak for points ;o)