Remplacer texte par lien automatiquement via base SQL

Eléphant du PHP | 83 Messages

22 févr. 2007, 03:10

salut,

je voudrais savoir comment je peux faire pour remplacer un mot dans un texte. Mais tout e, sachant que c'est mot son dans une base de donnée. :o :-° :( Vous voulez du concret: c'est simple je fais des fiches sur des films à partir d'un formulaire,j'enregistre dans une bdd puis je les affiche sur une page:

Code : Tout sélectionner

Film français réalisé par Jean Luc Godard Avec Jean-Paul Belmondo, Anna Karina Genre : Drame Durée : 1h 55min
Je veux que les noms propres soient remplacé par des liens conduisant à leur fiche (exemple: annakarina.html ) mais que si leur nom est enregistré dans une table nommé personnage par exemple.

je pense qu'il faut utilise preg_replace() mais combiné à deux tables: je bloque !

Bon voila ce que j'ai essayé et evidement ça marche sauf que c'est pas tout à fait ça
<?php
  $os = "Charles Chaplin";
  $texte = "François Trufaut admire Charles Chaplin mais n'a jamais fait joué dans ces films Anna Karina.";
  $texte = preg_replace('#'.$os.'#', '<a href="'.$os.'.html">'.$os.'</a>', $texte);
  echo $texte ;
?>
//le script affiche Charles Chaplin en lien vers charliechaplin.html :)
j'ai donc essayer autrre chose: avec un array
<?php
  $os = array("Charles Chaplin", "Anna Karina", "Francois Truffaut");
  $texte = "François Truffaut admire Charles Chaplin mais n'a jamais fait joué dans ces films Anna Karina.";
  $texte = preg_replace('#'.$os.'#', '<a href="'.$os.'.html">'.$os.'</a>', $texte);
  echo $texte ;
?>
//le script ne remplace rien :'(
mais ça ne marche pas !! Pourquoi ?


Nouvelle idée:
<?php
include 'conf.php';

$reponse = mysql_query("SELECT * FROM acteurs");
while ($os = mysql_fetch_array($reponse))
{
  $texte = "François Trufaut admire Charles Chaplin mais n'a jamais fait joué dans ces films Anna Karina.";
  $texte = preg_replace('#'.$os['nom'].'#', '<a href="'.$os['id'].'.html">'.$os['nom'].'</a>', $texte);
  echo $texte ;
}
?>

Voila ce qu'il affiche:

François Trufaut admire Charles Chaplin mais n'a jamais fait joué dans ces films Anna Karina.
François Trufaut admire Charles Chaplin mais n'a jamais fait joué dans ces films Anna Karina.

:( Bon début mais moi je voudrais qu'il affcihe tout dans la même phrase.[/quote]

Eléphant du PHP | 135 Messages

22 févr. 2007, 14:20

Salut je suis pas un pro du php mais je crois que preg_replace fonction avec les expressions regulières.
Moi je pencherais plutôt pour la fonction str_replace . :)

A+ David.
Des noeuds au cerveau!

Invité
Invité n'ayant pas de compte PHPfrance

22 févr. 2007, 14:52

Héhé c'est plsu propre mais ça ne marche pas, le texte est repeter deux fois.