Toon posts:

[php] string doorzoeken naar namen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Op een nieuwssite, wil ik het nieuwsartikel doorzoeken op namen en als deze naam voorkomt in de database, dan moet de naam omgezet worden in een link.

Mijn idee was om de tekst te doorzoeken naar woorden met hoofdletters en dan via queries te kijken of deze in db voorkomt. Probleem echter met naam als 'Piet van Vliet' en het is wel een flinke belasting op de db. Zijn er betere opties?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Gewoon direct bij het invoeren, voordat het de db ingaat, al de tekst doorlopen en hem met link en al in de db neerzetten?

Als er al teksten instaan, eenmaal een updatequery uitvoeren op alle namen?

Kost even wat resources, maar dit is eenmalig.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ja, dat is idd een beter idee.

En hoe zoeken op namen? Kan natuurlijk ook de namen uit de database halen en checken of die in artikel voorkomen..

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Om hoeveel namen gaat het? Anders is het minder intensief om gewoon alle namen op te halen en het in php zelf op te lossen ipv query samen te stellen.

(en sowieso eenmalig zoals gorgi zegt.. dit wil je niet bij iedere request overnieuw doen :D)

Verwijderd

Topicstarter
Op vrijdag 26 juli 2002 13:21 schreef Bosmonster het volgende:
Om hoeveel namen gaat het? Anders is het minder intensief om gewoon alle namen op te halen en het in php zelf op te lossen ipv query samen te stellen.
Het gaat om zo'n 100 -200 namen schat ik.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

In talen als PHP / ASP bestaat zoiets als een replacefunctie

b.v. Replace("Jan Klaasen","<a href=""mailto:j.klaassen"">Jan Klaassen</a>")

In asp.

Zoiets zal vast ook wel met SQL kunnen.
Het gaat om zo'n 100 -200 namen schat ik.
Dan wordt het een loop, waarin je alle namen doorneemt.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Op vrijdag 26 juli 2002 13:23 schreef gorgi_19 het volgende:
In talen als PHP / ASP bestaat zoiets als een replacefunctie

b.v. Replace("Jan Klaasen","<a href=""mailto:j.klaassen"">Jan Klaassen</a>")

In asp.

Zoiets zal vast ook wel met SQL kunnen.
Ik kan dmv een query 100 - 200 van bovenstaande replacefuncties genereren in php die het artikel dan doorloopt. Maar weet niet of dat echt efficient is.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op vrijdag 26 juli 2002 13:26 schreef james_bond_007 het volgende:

[..]

Ik kan dmv een query 100 - 200 van bovenstaande replacefuncties genereren in php die het artikel dan doorloopt. Maar weet niet of dat echt efficient is.
Lijkt me de enige weg :P En 200 replace functies valt wel mee als het maar eenmalig hoeft te gebeuren.

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Verder is het misschien verstandig om in de database zowel een versie met als een versie zonder links op te nemen. Je kunt dan makkelijk records wijzigen en toch voorkomen dat er iedere keer gereplaced moet worden. Het kost wel wat extra schijfruimte, maar dat is tegenwoordig meestal geen probleem.

Pas de replâtrage, la structure est pourrie.


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 04-08 13:06

GraasGast

Analogue Heaven

het kan gewoon met 1 preg_replace() str_replace() hoor, als je de namen en de replacements in een array zet...

PHP:
1
$result = str_replace($array_namen, $array_links, $tekst);

[ Voor 0% gewijzigd door GraasGast op 31-07-2002 09:32 . Reden: dohh...als je geen regular expressions nodig hebt altijd str_replace() ipv preg_replace() gebruiken! ]

Pagina: 1