如何使用preg_replace_callback进行匹配(粗体)

时间:2011-07-06 13:50:15

标签: php regex

我试图找到一种方法来使用preg_replace_callback来替换匹配<b>的匹配</b>

例如:

文字:

  

这是一个文字,文字,这是一个文字

模式

  

/ text /或/(text)/或任何可以找到文本的模式

我希望结果是:

  

这是<b>文字</b><b>文字</b>,这是<b>文字</b>

谢谢..

3 个答案:

答案 0 :(得分:3)

你的意思是

(\btext\b)

并将其替换为

<b> $1 <\b>

here on Regexr

我认为您不需要preg_replace_callback,您可以使用preg_replace的反向引用来满足您的需求。

您可以执行类似

的操作
$string = 'This is a text ,, text , this is a text';
$pattern = '/(\btext\b)/';
$replacement = '<b> $1 <\b>';
echo preg_replace($pattern, $replacement, $string);

请参阅preg_replace doc

答案 1 :(得分:2)

出了什么问题:

<?php
$search = 'test';
$text = 'This is a test string';
// Filter out unwanted junk
$search = preg_replace('/[^a-z0-9]/', '', $search);
echo preg_replace('/('.$search.')/i', '<b>\1</b>', $text);
?>

这会产生:

This is a <b>test</b> string

答案 2 :(得分:0)

你为什么不尝试这个。

$string = "This is a text ,, text , this is a text";
$string = str_replace("text","<b>text</b>",$string);

它非常简单,不那么混乱:)。