使用Preg_Replace使用php-css将文本替换为其他文本


Replace text with other text using php css using Preg_Replace

css样式

<style>
.red { color: red; }
.blue { color: blue;}
</style>

php中的代码

<?php
$string = 'I want a [red]red[/red] apple and a [blue]blue[/blue] umbrella';
$patterns = array();
$patterns[0] = '/[red]/';
$patterns[1] = '/[/red]/';
$patterns[2] = '/[blue]/';
$patterns[3] = '/[/blue]/';
$replacements = array();
$replacements[0] = '<span class="red">';
$replacements[1] = '</span>';
$replacements[2] = '<span class="blue">';
$replacements[3] = '</span>';
echo preg_replace($patterns, $replacements, $string);
?>

但它不带我的价值,也就是说,不改变影响。我尝试删除"''",但仍然无法使用

我认为模式应该如下所示。。

$patterns[0] = '/'[red']/';
$patterns[1] = '/'['/red']/';
$patterns[2] = '/'[blue']/';
$patterns[3] = '/'['/blue']/';

您需要在正则表达式中转义特殊字符([/)。这是工作代码:

<?php
$string = 'I want a [red]red[/red] apple and a [blue]blue[/blue] umbrella';
$patterns = array();
$patterns[0] = '/'[red']/';
$patterns[1] = '/'['/red']/';
$patterns[2] = '/'[blue']/';
$patterns[3] = '/'['/blue']/';
$replacements = array();
$replacements[0] = '<span class="red">';
$replacements[1] = '</span>';
$replacements[2] = '<span class="blue">';
$replacements[3] = '</span>';
echo preg_replace($patterns, $replacements, $string);
// outputs: I want a <span class="red">red</span> apple and a <span class="blue">blue</span> umbrella
?>

您甚至可以更进一步,以更通用的方式编写代码(即支持更多颜色):

$string = 'I want a [red]red[/red] apple and a [blue]blue[/blue] umbrella';
$regex = '/'[(red|green|blue)']([^][]+)'['/'1']/i';
// provide an alternative and capture it in the first group
echo preg_replace($regex, "<span class='$1'>$2</span>", $string);

请参阅此处的示例。