highlight()

Door Eddy E, 20 jaar geleden, 4.103x bekeken

Deze functie gebruik ik om woorden te 'highlighten'.
Niet echt boeind, maar ik gebruik hem ook in mijn eerste snippet 'Citaten', vandaar dat ik hem toch post.

$tekst moet een string zijn
$woorden moet een array zijn, of een string met ", "-gescheiden.

Woorden met 1 hoofdletter aan het begin worden goed vervangen (denk aan namen etc), mits het in $tekst goed geschreven staat.

Voorbeeld: http://www.phphulp.nl/php/scripts/11/1394/

Gesponsorde koppelingen

PHP script bestanden

  1. highlight

 

Er zijn 11 reacties op 'Highlight'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Michael
michael
20 jaar geleden
 
0 +1 -0 -1
ziet er wel ok uit. paar puntjes alleen.

Ik snap niet waarom je 2 keer moet checken of het een array is. Dit kan makkelijk in 1 functie denk ik.

verder graag de variabelen buiten de strings laten. Dit is gewoon netter en makkelijker te zien voor de programmeur. Dus minder foutgevoelig.
voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<span class="highlight">'.$woord.'</div>'
?>


<font> wordt volgens mij niet meer ondersteund door web 2.0, xhtml zooi. je kan ook gewoon span gebruiken en daarna een class meegeven.

Ik snap dat met die hoofdletter eerlijk gezegd ook niet...

misschien is het leuk om in de toekomst hier een opmaak klasse van te maken met daarin deze functie ofzo. En dan is het misschien ook leuk om meerdere soorten highlights mee te geven. Dat je dus voor bepaalde woorden een andere class mee geeft.

keep up the good work :)
Eddy E
Eddy E
20 jaar geleden
 
0 +1 -0 -1
@ Micheal: dat van die variableen buiten de quotes... dat doe ik toch ook???
Het gedeelte van de <span> en <font> heb ik veranderd. Font is inderdaad nogal oud.
Michael
michael
20 jaar geleden
 
0 +1 -0 -1
ja nu heb je het veranderd ja :D op het moment dat ik mijn reactie schreef zag ik duidelijk variabelen binnen de quotes. maar maakt niet uit. Het is nu iig goed :)

EDIT: ok ik zie het al waarom ik dat had geschreven. Je hebt dit in je code:'<span class="highlight$i"> Volgens mij kan die $i gewoon weg ipv het eruit halen
Iisys
iisys
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    if(!is_array($woorden))
        {

        // zo niet: exploden op komma/spatie
        if(strpos($woorden, ", ")){explode(", ",$woorden);}
        }

?>

moet dit niet het volgende zijn?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    if(!is_array($woorden))
        {

        // zo niet: exploden op komma/spatie
        if(strpos($woorden, ", ")){$woorden=explode(", ",$woorden);}
        }

?>

Anders verander je nl niks aan $woorden. En daarbij is $woorden na een exlode áltijd een array, ookal is hij niet ge'explode. Kijk in dit geval of count($woorden) > 1.

1. Waarom de variabelen opruimen? Het zijn lokale variabelen, dus het geeft verder geen problemen.
2. strip_tags()? Waarom? Misschien wil ik wel woorden in een html bestand highlighten.
3. Als je dan toch $i gebruikt als teller (waarvan ik het nut ook niet zie), gebruik dan gewoon for ($i=0;$i<count($woorden);$i++) ipv je foreach.
Scheelt weer een $i++; en een $i = 0;

Gewoon maar wat opmerkingen, verder een handig script!
Michael
michael
20 jaar geleden
 
0 +1 -0 -1
een for lus is in praktijk iets sneller dan een foreach lus. maarja foreachlus werkt lekkerder vind ik.
Eddy E
Eddy E
20 jaar geleden
 
0 +1 -0 -1
@ Michael: over de edit in queotes: ik had dat inderdaad net aangepast.
class$i gebruik ik voor verschillende woorden. Bij 3 woorden kan ik dus 3 kleuren achtergrond (of andere css) kiezen. Gewoon 3 verschillende classes voor css dus.

@ iisys: goed opgemerkt. Daar had ik nog overheen gekeken... blijkbaar niet aan het licht gekomen met het testen. Ik verander het direct even.
Die $i is dus tevens voor de classes voor css.
Die heb ik dus wel nodig.
En waarom met $i=0 .... tja, dat vind ik persoonlijk logischer/duidelijker dan die for(count-blablabla).
Tevens is mij afgeraden om die count() in een for() te gebruiken, omdat dat vele malen trager kan zijn dan for($i), waarbij $i dus vaststaat.
Foreach() vind ik ook makkelijker werken.
De striptags kunnen vernaggeld worden door deze code... en dat wil ik niet. Toevallig was in mijn tekst nooit html-code, maar het stond er meer bij uit 'standaard'.
En me zooi opruimen is vaak wel zo lekker.



In ieder geval wel beide bedankt voor deze input. Zo blijf ik leren.
Michael
michael
20 jaar geleden
 
0 +1 -0 -1
die $i snap ik nog steeds niet.... Als er 10 woorden gehighlight moeten worden heb je dus 10 css classen nodig??
Eddy E
Eddy E
20 jaar geleden
 
0 +1 -0 -1
Ja, en dat heb ik ook ;).
Dwz: 1 class die ze allemaal opgeeft en dan steeds 1 regel anders (background-color).
Richard van Velzen
Richard van Velzen
20 jaar geleden
 
0 +1 -0 -1
http://aidanlister.com/repos/v/function.str_highlight.php

Dit ziet er een stuk beter uit, en biedt veel meer flexibiliteit.
ScrapZz nl
ScrapZz nl
16 jaar geleden
 
0 +1 -0 -1
Bij mij geeft hij niks weer ;(

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$tekst
= preg_replace('#\(.*)\[\/code\]#is',highlight('$1','$1'), $tekst);
?>



Het is de zoveelste die ik probeer!
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- Ariën  -
- Ariën -
16 jaar geleden
 
0 +1 -0 -1
Gezien dat [code-] blok denk ik dat je het verwart met code highlighting? En dit is heel wat anders.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. highlight

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.