2009-12-29 13 views
0

im nouveau à preg et veut trouver quelques chaînes que j'ai eu dans un tableau et souligner chacun.mettre <em>et</em> au début et à la fin de chaque mots-clés trouvés

par ex.

array[0] = "windows"; 
    array[0] = "windows xp"; 

    text will be: <em>windows</em> is bla bla...<em>windows xp</em> is bla bla 

Comment puis-je faire cela?

+0

Est-ce un type de recherche et de remplacement que vous voulez? Si oui, est-ce en texte brut ou HTML? – cletus

+0

c'est un corps et je veux le trouver avec php. sorte d'un utilisateur entrer un mot-clé et je le souligne. – ajsie

Répondre

3

remplacement très simple, pas besoin de preg_ *:

$mytest = "Windows XP was all right, but I like Windows 7 better!°"; 
$replacement = "Windows XP"; 
echo str_replace($replacement, "<em>".$replacement."</em>", $mytest); 

Vous pouvez également remplacer les tableaux. [Saisie manuelle] [1]

+0

désolé j'ai mis à jour la question. – ajsie

+0

une réponse est la même ;-) même pour la question mise à jour – UncleMiF

+0

$ string = 'windows xp'; $ string = ''. $ chaîne. «»; echo $ chaîne; – UncleMiF

1

Si vous faites la recherche et remplacer le texte, cela est facile:

$text = 'windows xp'; 
$input = '....'; 
$output = str_replace($text, '<em>' . $text . '</em>', $input); 

Si vous avez un bloc de HTML stocké sous forme de chaîne, il est une autre question à Considérez: que se passe-t-il si le texte recherché par l'utilisateur fait partie d'un nom ou d'une valeur d'étiquette ou d'attribut? Si vous voulez mettre en évidence « forte » vous ne voulez pas remplacer:

<strong>some text</strong> 

avec:

<<em>strong</em>>some text</<em>strong</em>> 

que votre balisage ne sera plus valide.

C'est le problème avec l'utilisation simple de recherche et de remplacement ou des expressions régulières sur le balisage. La meilleure façon de gérer cela est de convertir en balisage dans un arbre DOM puis de le faire en remplaçant les nœuds de texte. Même cela a des problèmes. Si vous voulez mettre en évidence « Windows XP » voulez-vous mettre en évidence ce cas:

windows <i>xp</i> 

Th il apparaît comme euse « windows xp » il est donc raisonnable de supposer que l'utilisateur voudra souligner que.

+0

Je veux rechercher un texte pour les mots-clés que j'ai dans un tableau et les éclairer tous. J'ai l'impression qu'il y a beaucoup de choses à considérer, donc je ne lance pas de problème intp avec les balises html. voir mon post mis à jour .. – ajsie

0
$string = preg_replace("(windows(xp)?)", "<em>$0</em>", $string)