Klaar voor een nieuwe uitdaging.
Tweakers gaat op sommige highlights ook flink in de zeik, dus dan ben je niet de enige
Dan moet je highlights alleen op teksten toepassen buiten de <> dan blijft de lay-out in orde, of bedoel je dat niet?Op donderdag 28 maart 2002 15:23 schreef chem het volgende:
ik wil graag wat stukken tekst kunnen voorzien van 'ge-highlighte' woorden.
Probleem is echter; wat als iemand als highlight opgeeft: 'table'... dan is je pagina goed de sjaak
Arien, tomato, dusty - help me
Dyslexie | Linux | MoZilla | OpenOffice
daar was ik al naar op zoek geweestOp donderdag 28 maart 2002 15:32 schreef Arien het volgende:
[..]
Moje effe zoekuh...
Deze: [topic=139747]
ff testen
Klaar voor een nieuwe uitdaging.
nee, ze geven allemaal problemen... 
krijg ook spontane parse error on line 0's ervan enzo...
nog suggesties?
krijg ook spontane parse error on line 0's ervan enzo...
nog suggesties?
Klaar voor een nieuwe uitdaging.
je kan toch mbv look-ahead/look-back(?) kijken of er wel of niet een < dan wel > voor zit en adh daarvan wel of niet replace ?
http://www.php.net/manual/en/pcre.pattern.syntax.php#regexp.reference.assertions
http://www.php.net/manual/en/pcre.pattern.syntax.php#regexp.reference.assertions
Verwijderd
Beste idee waar ik nu op kan komen:chem: Nog suggesties?
1. Match vanaf (als in: look-back) een '>' of begin tekst tot aan een '<' (look-ahead).
2. Vervang in de match het zoekwoord globaal.
3. Naar stap 1.
Dus een global replace in een global match (of string functie combo voor '>' en '<' ofzo).
Lijkt dat ergens op?
/me is niet zo productief meer...

* chem is geen regexp kenner
ik kan wel wat aanpassen enzo in een bestaande regexp, maar looknack/lookahead/lookaroundthecorner zegt me weinig..
ik kan wel wat aanpassen enzo in een bestaande regexp, maar looknack/lookahead/lookaroundthecorner zegt me weinig..
Klaar voor een nieuwe uitdaging.
Verwijderd
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| my $keyword = "hier"; $_ = <<'HTML'; hier en hier en <hier> zitten <tag /> tags en ook hier zit een tag</hier hier="hier"> en hierin ook. <bla="hier">hier etc. HTML sub hi { my $text = shift; $text =~ s/$keyword/uc $keyword/ego; return $text; } s/(>|^) ([^<]+) (?=<|$)/$1 . hi($2)/egsx; print; |
In Perl, maar het idee is in PHP zo na te bouwen en te verfraaien en werkt (als ik de wereld nog een beetje begrijp

Output:
code:
1
2
3
| HIER en HIER en <hier> zitten <tag> tags en ook HIER zit een tag</hier hier="hier"> en HIERin ook. HIER<bla> |
Relevante stukjes:
code:
1
| $text =~ s/$keyword/uc $keyword/ego; |
Vervang elke $keyword door de uppercase versie.
code:
1
| s/(>|^) ([^<]+) (?=<|$)/$1 . hi($2)/egsx; |
Vervang elk stuk vanaf begin van de tekst of een '>' tot aan een '<' f het einde van de tekst (buiten tags dus) door de output van hi subroutine met '>' of niets ervoor.
(Perl kan geen variabele lengte lookbehind op dit moment vandaar de $1.)
Zo gaat ie lukken?
bwahhhh leuk stukje 
ik ga er mee spelen... als 't gelukt is pleur ik de PHP zut hier neer
ik ga er mee spelen... als 't gelukt is pleur ik de PHP zut hier neer
Klaar voor een nieuwe uitdaging.
met een beetje hulp van een collega 
PHP:
1
2
3
4
5
6
7
8
9
10
11
| <? $keyword = 'hier'; $text = 'hier en hier en <hier> zitten <tag /> tags en ook hier\' zit een tag</hier> en hierin ook. <bla="hier">hier etc.'; $text2 = preg_replace( "/(>|^)([^<]+)(?=<|$)/esx", "'\\1'.str_replace('". $keyword ."','<b>". $keyword ."</b>','\\2')", $text); echo "Before:<hr>"; echo htmlentities($text) ."<hr>"; echo "<p>After:<hr>"; echo htmlentities($text2) ."<hr>";?> |
[ Voor 31% gewijzigd door ACM op 24-01-2004 14:16 ]
Klaar voor een nieuwe uitdaging.
Hmmm, ik vind hem niet zo heel mooi (jammer van die fixed width lookbehind in perlre en dat je replace routine alsnog moet 'zoeken'). Zat meer aan zoiets te denken:
IMHO is dat veel duidelijker leesbaar de regels wanneer iets gehighlight mag worden zijn gemakkelijker aan te passen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #!/usr/bin/perl -w use strict; $_ = '<hoi> enzo hoi en hoi <hoi en hoi en> hoi hoi <boi> hoi'; my $hl = 'hoi'; s/ (<[^>]+>) | (\Q$hl\E) / defined $2 ? uc $2 : $1 /xeg; print; |
IMHO is dat veel duidelijker leesbaar de regels wanneer iets gehighlight mag worden zijn gemakkelijker aan te passen
Pagina: 1