za označavanje si dobio, a evo ti za nalaženje #fragmenta..
Code:
function fragment($contents, $pattern) {
$s = substr($contents, 0, strpos($contents, $pattern));
preg_match_all('~<a [^>]*\bname=["\']?([^"\'>\s]+)~is', $s, $a);
return @trim(array_pop($a[1]), '\'"');
}
samo još nekoliko napomena:
1) ovo naravno u slučaju da želiš da koristiš fragmente koji se već nalaze u dokumentu. a ako već menjaš dokument, možeš i da jednostavno pored bojenja texta ubaciš i svoj fragment tipa
<a name="nađeno"> odmah ispred nađene reči (koristeći boccijevo rešenje).
2) ovaj regex bi trebao da radi u preko 95% slučajeva.. ne radi recimo za fragmente sa spejsom, tipa
<a name="bla truc">, ali može i to da se sredi (malo je komplikovaniji regex).
3) ako će pretraživanje ići uglavnom po engleskim rečima, onda ono boccijevo rešenje može da nađe i više od traženog. npr, pretraga za
body može da nađe HTML tag
<body>. no, i to se da srediti jednim regex callback-om.
4) a ako pak radiš sa ne-engleskim stranicama, onda moraš da povedeš računa i oko enkodinga (charset). moja lična preporuka po ovom pitanju je da da sve normalizuješ na UTF-8, pa da tako pretražuješ.. (hint: iconv)
5) samo deluje jednostavno.. :-P