login  Naam:   Wachtwoord: 
Registreer je!
 Forum

name2link vervolg (Opgelost)

Offline markla - 14/06/2010 21:37 (laatste wijziging 14/06/2010 21:38)
Avatar van marklaPHP interesse Afgelopen weekend heb ik dit bericht geplaatst.

http://www.sitemasters.be/forum/1/37567

Dit werkt  

Maar waar ik nu tegen aan loop is het volgende:

het script bekijkt de woorden in de tekst en als er dan een achternaam voorbijkomt die in de players table staat dan vervangt hij die met de link.

Nu kan het gebeurden dat er in een zin staat "dick Advocaat liet via zijn Advocaat weten..."

In beide gevallen vervangt jij Advocaat met de link naar player Advocaat. Dit is mijn inziens niet te voorkomen.

Maar wat nu als er de naam Groenendijk staat?

in de players table staan
Groen
Groenen
Groenendijk

In dit geval zal hij alleen van Groenendijk een link maken.

Als ik de str_replace ga voeden met Voornaam & tussenvoegsel & achternaam. zal dat de trefzekerheid verhogen. Maar het komt best wel vaak voor dat ik de voornaam niet heb, om de simpele reden dat het newsitem 1op1 overgenomen is uit de krant.

Heeft iemand een tip of een grandioos idee 

11 antwoorden

Gesponsorde links
Offline Jelmerholland - 15/06/2010 11:51 (laatste wijziging 15/06/2010 11:52)
Avatar van Jelmerholland PHP beginner Misschien dat je een check met strlen kan doen? Dat als 1 woord dezelfde lengte heeft als de naam, hij komt ook overeen, dan pas doen. Want een 'groenen' = 7 en 'groen' = 5. Dus die kan dan nóóit meer hetzelfde overkomen. Maar hoe je dit precies moet realiseren weet ik niet. Maar ik denk dat als je er wat mee gaat experimenteren dat je een heel eind komt 

PHP: strlen()
Offline Martijn - 15/06/2010 19:08
Avatar van Martijn Crew PHP reguliere expresies
zoek van 'groen' tot de eerste non a-z erna. Dus bv een spatie of een punt
Offline markla - 25/06/2010 09:54
Avatar van markla PHP interesse Dit werkt nu  

Maar nu wil ik nog meer  

Ik zou ook graag een team2link bij willen hebben.

Als er dan in de tekst staat "Dick Advocaat speelde o.a. bij ADO, Roda jc en VVV" dat dan de een name2link en een team2link wordt toegepast.

De Function team2link is snel en simpel om te bouwen to team2link.

Maar ik kan maar één keer de
  1. $artikel = nametolink($record['newsitemcontent'])


uitvoeren, toch?

Kan ik de name2link en de team2link in één function plaatsen?

en zo ja hoe
Offline Jelmerholland - 25/06/2010 13:30
Avatar van Jelmerholland PHP beginner Wat is de code die je nu hebt? Want ik neem aan dat dat wel kan ja.

Gewoon de team2link in de zelfde loop zetten als waar name2link staat
Offline TotempaaltJ - 25/06/2010 17:08
Avatar van TotempaaltJ PHP interesse Als je de functie team2link maakt kan je ze allebei achter elkaar aanroepen:
  1. $artikel = nametolink($record['newsitemcontent'])
  2. $artikel = teamtolink($record['newsitemcontent'])
Offline markla - 26/06/2010 09:10
Avatar van markla PHP interesse @ helaas dit werkt niet
  1. 1.$artikel = nametolink($record['newsitemcontent'])
  2. 2.$artikel = teamtolink($record['newsitemcontent'])


dit zijn beide functies

  1. ///////////////////////////////////////////////////////////////////
  2. // nametolink V.2.5 | fullname search added ///
  3. // Find a playersname in the news item and ///
  4. // And make it a link to the playerstats page ///
  5. // 13-jun- 2010 ///
  6. // by markla ///
  7. //////////////////////////////////////////////////////////////////
  8.  
  9. function nametolink ($article_text)
  10. {
  11. //get all names
  12. $Q_name2link=
  13. "SELECT
  14. a.Player_Achternaam as player_achternaam,
  15. a.Player_Voornaam as player_voornaam,
  16. a.Player_Tussenvoegsel as player_tussenvoegsel,
  17. a.Player_ID as playerid
  18. FROM
  19. af_players a
  20. Order BY a.Player_Achternaam, a.Player_Voornaam
  21. ";
  22.  
  23. $name2link= mysql_query($Q_name2link) or die ( mysql_error( ) );
  24.  
  25. while($record = mysql_fetch_array($name2link))
  26. { //open while
  27. if(empty($record["player_tussenvoegsel"]))
  28. {// open the if loop
  29. $Player_urlName = $record["player_achternaam"].", ".$record["player_voornaam"]." ".$record["player_tussenvoegsel"];
  30. $Player_Name = $record["player_voornaam"]." ".$record["player_achternaam"];
  31. $find = $Player_Name;
  32. $replace= '<a href="http://www.website.nl/speler/'.$record["playerid"].'/'.strtolower(clean_url($Player_urlName)).'.htm" target="_blank" ><u>'.$Player_Name.'</u></a>';
  33. $article_text = str_replace($find, $replace, $article_text);
  34. } else {
  35. $Player_urlName = $record["player_achternaam"].", ".$record["player_voornaam"]." ".$record["player_tussenvoegsel"];
  36. $Player_Name = $record["player_voornaam"]." ".$record["player_tussenvoegsel"]." ".$record["player_achternaam"];
  37. $find = $Player_Name;
  38.  
  39. $replace= '<a href="http://www.website.nl/speler/'.$record["playerid"].'/'.strtolower(clean_url($Player_urlName)).'.htm" target="_blank" ><u>'.$Player_Name.'</u></a>';
  40. $article_text = str_replace($find, $replace, $article_text);
  41. } // close the if loop
  42.  
  43. } //close while
  44. return $article_text;
  45. }
  46. ///////////////////////////////////////////////////////////////////
  47. // END nametolink ///
  48. ///////////////////////////////////////////////////////////////////
  49.  
  50. //////////////////////////////////////////////////////////////////////////
  51. // TEAM2link V.2.0 ///
  52. // Find a Teamname that's in the news item and ///
  53. // And make it a link to the team stats page ///
  54. // 13-jun- 2010 ///
  55. // by markla ///
  56. /////////////////////////////////////////////////////////////////////////
  57.  
  58. function teamtolink ($article_text)
  59. {
  60. //get all names
  61. $Q_team2link=
  62. "SELECT
  63. a.Team_ID as teamid,
  64. a.TeamName as teamname
  65. FROM
  66. af_teams a
  67. WHERE a.Team_ID > 3
  68. ORDER BY
  69. a.TeamName
  70. ";
  71.  
  72. $team2link= mysql_query($Q_team2link) or die ( mysql_error( ) );
  73.  
  74. while($record = mysql_fetch_array($team2link))
  75. {
  76. $team_urlName = $record["teamname"];
  77. $team_name = $record["teamname"];
  78. $find = $team_name;
  79. $replace = '<a href="http://www.website.nl/teams/'.$record["teamid"].'/'.strtolower(clean_url($team_urlName)).'.htm" target="_blank" ><u>'.$team_name.'</u></a>';
  80.  
  81. $article_text = str_replace($find, $replace, $article_text);
  82. }
  83. return $article_text;
  84. }
  85. ///////////////////////////////////////////////////////////////////
  86. // END TEAM2LINK ///
  87. ///////////////////////////////////////////////////////////////////
Offline TotempaaltJ - 26/06/2010 11:07
Avatar van TotempaaltJ PHP interesse Errors ofzo?
Offline markla - 26/06/2010 11:36
Avatar van markla PHP interesse
TotempaaltJ schreef:
Errors ofzo?


nee, maar op deze manier komt alleen het resultaat van de tweede functie terug.

Zou ik niet eerder het resultaat van de eerste functie door de tweede moeten halen?
Offline Jelmerholland - 26/06/2010 15:37 (laatste wijziging 26/06/2010 15:37)
Avatar van Jelmerholland PHP beginner Nogal logisch als ik 't zo bekijk.


  1. $artikel = nametolink($record['newsitemcontent']);
  2. $artikel = teamtolink($record['newsitemcontent']);


Dus je overschrijft de $artikel met teamtolink waardoor nametolink teniet wordt gedaan.

Doe 't zo:
  1. $artikel = nametolink($record['newsitemcontent']);
  2. $artikel = teamtolink($artikel);


Dan zou 't moeten werken.
Bedankt door: markla
Offline markla - 26/06/2010 21:28
Avatar van markla PHP interesse Dat is hem dus. werkt perfect

Thanks
Offline Jelmerholland - 26/06/2010 23:34
Avatar van Jelmerholland PHP beginner Your welcome ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.248s