renathy Posted September 27, 2011 Report Share Posted September 27, 2011 (edited) Man ir teksts. Ir atslēgvārdi (ielādēti no db) masīvā. Katram atslēgvārdam pretim ir links. Ir jāaizvieto tekstā atrastie atslēgvārdi ar doto linku. Te jāņem vērā, pirmkārt, ka lielie/mazie burtie neskaitās. Otrkārt, ka jāaizvieto tikai vārdi, kas tiešām ir vārdi. Piemēram, "hedgehog" ir vārds un ja meklē pēc "hedge", tad vārdu "hedgehog" nevajadzētu saskaldīt. Savukārt, "hedge." vai "hedge+" vajadzētu pārveidot par linku. Šeit tātad sanāk, ka taisu ciklu pa keywordiem un tad jātaisa preg_match. Pirmkārt, jau jāuzraksta regulārā izteiksme. (teiksim, kas varētu nestrādā šajā variantā - /\b(hedge)\b/i Otrkārt, jautājums ir svarīgāks, vai šeit neradīsies performances problēmas, ja atslēgvārdu saradīsies šausmīgi daudz...? Es domāju, ka ar šo daudzi saskārušies... Varbūt kāda pieredze šajā jautājumā? Edited September 27, 2011 by renathy Quote Link to comment Share on other sites More sharing options...
Kavacky Posted September 28, 2011 Report Share Posted September 28, 2011 Ja var rasties situācija, ka katrs otrais vārds būs kaut kāds links, tad jāpārdomā, vai tas mēsls beigās vispār būs lietojams bez rupjiem vārdiem. Un diez vai tas radikāli iebremzēs. Bet citi varianti būtu: a) Nezinu tikai, kāda ir šīs funkcijas iekšējā realizācija, bet var ar str_replace un masīvu, pirms tam masīvus atbilstoši sagatavojot, saģenerējot ciklā visas atļautās vārda formas { " lol ", " lol.", " lol," } un tad vienā piegājienā replace'ojot. b) Vai glabāt jau uzģenerētu tekstu un pārģenerēt, kad rodas jauns keywords. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted September 29, 2011 Report Share Posted September 29, 2011 Varbūt veikt attiecīgā teksta aizstāšanu ar linkiem klienta-pusē? PHP vajag tikai izvadīt masīvu un JavaScript parūpējas par visu pārējo. Mazāka noslodze uz servera. P.S. Jebkura gadījumā... arī variants. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.