如何使用PHP preg_replace正则表达式查找和替换文本?
我编写此PHP代码是为了进行一些替换:如何使用PHP preg_replace正则表达式查找和替换文本?,php,regex,Php,Regex,我编写此PHP代码是为了进行一些替换: function cambio($txt){ $from=array( '/\+\>([^\+\>]+)\<\+/', //finds +>text<+ '/\%([^\%]+)\%/', //finds %text% ); $to=array( '<span class="P">\1</span>', '&l
function cambio($txt){
$from=array(
'/\+\>([^\+\>]+)\<\+/', //finds +>text<+
'/\%([^\%]+)\%/', //finds %text%
);
$to=array(
'<span class="P">\1</span>',
'<span>\1</span>',
);
return preg_replace($from,$to,$txt);
}
echo cambio('The fruit I most like is: +> %apple% %banna% %orange% <+.');
函数cambio($txt){
$from=数组(
'/\+\>([^\+\>]+)\%apple%%banna%%orange%texttext试试这个:
function cambio($txt){
$from=array(
'/\+\>([^\+\>]+)\<\+/', //finds +>text<+
'/\%(^\%)([^\%]+)\%/', //finds %text%
);
$to=array(
'<span class="P">\1</span>',
'<span class="\1">\1\2</span>',
);
return preg_replace($from,$to,$txt); }
echo cambio('The fruit I most like is:
+> %apple% %banna% %orange% <+.');
函数cambio($txt){
$from=数组(
“/\+\>([^\+\>]+)\%apple%%banna%%orange%内部跨度的类别(即class=“b”)总是等于水果的第一个字母?你是在用PHP编写自己的模板语言吗?小心。Ass3mbler,对不起,我不想与内容的第一个字母建立关系。我将类名编辑为:t1、t2和t3。Nathan,我不敢走这么远:-)@罗杰:不需要编辑你的问题标题就可以说问题已经解决了。被接受的答案会告诉你(在大多数情况下);)Obrigado/Gracias,Xavier!再深入一点,有可能得到这个吗?:我最喜欢的水果是:apple banna coco。你需要使用preg_replace_callback()
function。但此函数是无状态的,因此您需要作弊。请参见示例,但请注意,它仅适用于PHP5.3 Perfect!不可触摸。谢谢。您的代码回应:我最喜欢的结果是:%apple%%banna%%orange%…注意,我更改了一些我最初希望的内容。我正在想象如何使用strin命名内部span类g与内容无关。。。
The fruit I most like is: <span class="P"> <span class="t1">apple</span> <span class="t2">banana</span> <span class="t3">coco</span> </span>.
function matches($matches){
static $pos=0;
return sprintf('<span class="t%d">%s</span>',++$pos,$matches[1]);
}
function cambio($txt){//Markdown da Atípico : Deve ser usado depois do texto convertido para markdown
$from=array(
'/\=>(.+?)<\=/', //finds: =>text<=
'/\+>(.+?)<\+/', //finds +>text<+
);
$to=array(
'<span class="T">\1</span>',
'<span class="P">\1</span>',
);
$r=preg_replace($from,$to,$txt);
return preg_replace_callback('/%(.*?)%/','matches',$r);//finds %text%
//'/%((\w)\w+)%/' //option
}
function cambio($txt){
$from=array(
'/\+\>([^\+\>]+)\<\+/', //finds +>text<+
'/\%(^\%)([^\%]+)\%/', //finds %text%
);
$to=array(
'<span class="P">\1</span>',
'<span class="\1">\1\2</span>',
);
return preg_replace($from,$to,$txt); }
echo cambio('The fruit I most like is:
+> %apple% %banna% %orange% <+.');
<?php
function cambio($txt){
$from=array(
'/\+>(.+?)<\+/', //finds +>text<+
'/%((\w)\w+)%/', //finds %text%
);
$to=array(
'<span class="P">\1</span>',
'<span class="\2">\1</span>',
);
return preg_replace($from,$to,$txt);
}
echo cambio('The fruit I most like is: +> %apple% %banna% %orange% <+.');
function cambio($txt) {
return preg_replace_callback('/\+>(.+?)<\+/', function ($matches) {
$txt = sprintf('<span class="P">%s</span>', $matches[1]);
return preg_replace_callback('/%(\w+)%/', function ($matches) {
static $pos = 0;
return sprintf('<span class="t%d">%s</span>', ++$pos, $matches[1]);
}, $txt);
}, $txt);
}
echo cambio('The fruit I most like is: +> %apple% %banna% %orange% <+.');