2010-03-20 13 views
2
<?php 
    $a="php.net s earch for in the all php.net sites this mirror only function 
     list online documentation bug database Site News Archive All Changelogs 
     just pear.php.net just pecl.php.net just talks.php.net general mailing 
     list developer mailing list documentation mailing list What is PHP? PHP 
     is a widely-used..."; 
?> 

Je veux mettre en évidence des mots spécifiques.remplacer chaîne dans preg_replace

Par exemple php, net et func:

php.net s earch for in the all **php**.**net** sites this mirror only **func**tion list online documentation bug database Site News Archive All Changelogs just pear.**php**.**net** just pecl.**php**.**net** just talks.php.net general mailing list developer mailing list documentation mailing list What is **PHP**? **PHP** is a widely-used...

Merci d'avance.

+0

Pourquoi pas mis en surbrillance le premier 'php.net'? – kennytm

+0

Si vous voulez mettre en surbrillance la phrase 'php' et que l'entrée est' php, PHP, php (123), php.net' devrait-elle être convertie en '** php **, PHP, php (123), php.net 'ou' ** php **, ** PHP **, php (123), php.net »ou peut-être même ** php **, ** PHP **, ** php ** (123), * * php **. net'? – Crozin

+0

et comment le script, qui menchion le mot entier, s'il contient le mot-clé? mot-clé "fun", string - le chat est drôle, résultat - le chat est * drôle *; – Simon

Répondre

5

Vous pouvez effectuer les opérations suivantes:

// your string. 
$str = "..............."; 

// list of keywords that need to be highlighted. 
$keywords = array('php','net','fun'); 

// iterate through the list. 
foreach($keywords as $keyword) { 

    // replace keyword with **keyword** 
    $str = preg_replace("/($keyword)/i","**$1**",$str); 
} 

Le remplacement ci-dessus de la volonté du mot-clé, même si le mot-clé est une sous-chaîne d'une autre grande chaîne. Pour remplacer uniquement le mot-clé comme mots complets que vous pouvez faire:

$str = preg_replace("/\b($keyword)\b/i","**$1**",$str); 
+0

Essayez d'utiliser ce code sur quelque chose comme ceci: 'Le chat est drôle'. La sortie sera: 'Le chat est ** amusant ** ny'. – Crozin

+1

Oui, pleurnicher au lieu d'essayer d'améliorer la réponse. codaddict n'a besoin que de câliner '($ keyword)' avec '\ b' de chaque côté, et ça marchera comme prévu. – rjh

+0

@Crozin: c'est ce que veut OP. Il veut faire le remplacement même si le mot-clé est une sous-chaîne de n'importe quel mot plus grand. – codaddict

0
$words = 'php|net|func'; 

echo preg_replace("/($words)/i", '**$1**', $a);