2013-10-31 49 views
0

我有一个字符串,我转换为一个数组。而且我转换的字符串是来自搜索的关键字,这些关键字与大量文本中的关键字匹配。带HTML标签的preg_replace数组?

我想与数组一起使用它中的关键字添加html标签到具有相似关键字的文本块。

例如: 关键词:狗,猫,牛前

文字:我自己的两只狗,四只猫,和二十头牛。

文字:我拥有两辆,四家,二十奶牛

我有的文本块是在一个变量中。

但我不知道我确切需要什么正则表达式,与preg_replace();一起使用。

<?php 
    echo preg_replace($text, <b></b>, $keywords); 
?> 

我是否会走向正确的方向?

回答

2

创建使用交替匹配任何的话,用|加入字正则表达式。在替换字符串中,使用$0来引用已匹配的文本部分。

$regexp = '/\b(' . implode('|', $keywords) . ').*?\b/i'; 
echo preg_replace($regexp, '<b>$0</b>', $text); 

DEMO

+0

谢谢,它输出的文字,但没有关键字已被标签包裹,我失去了一些东西? –

+0

适合我,请参阅演示。 – Barmar

+0

我的问题是我的关键字都是小写字母和大写字母,文字可能反过来。如果可以调整正则表达式以匹配文本,如果其中任何一个是上限或下限? –

0

您可以使用此代码:

echo preg_replace('/\b((?:cat|dog|cow)\S*)/i', `<b>$1</b>`, $keywords); 
+1

你可以用'\ S'而不是'[^ \ s]' – Barmar

+0

@Barmar:是的感谢,更新。 – anubhava