-1

我尝试从字符串中替换字符并放入其他字符,为此使用 preg_replace_callback 函数,问题是此函数更改原始文本的顺序并显示不同的结果

例如,如果字符串 it´s :

大家好 [1-2-3] 这是一个测试 [4-5-6-7-8] --- > 原文

脚本搜索 [ ] 并用 [ ] 将此内容与其他文本分开,但按我放在这里的方式显示:

1-2-3 4-5-6-7-8 大家好,这是一个测试 --- > 不好的结果

当正确的顺序是第一个没有 [ ]

大家好 1-2-3 这是一个测试 4-5-6-7-8

我创建的脚本:

<?php

$text = " This is a test [gal~ruta~100~100] This is other test [gal~ruta2~100~100]";

function gal($matches)
{

global $text;

$exp=explode("~",$matches[1]);

$end=str_replace($matches[1],$a,$text);

if ($exp[0]=="gal")
{
$a="".$exp[1]."".$exp[2]."".$exp[3]."";
echo $a;
}


}


echo preg_replace_callback(
"/\[(.*?)\]/",
"gal",
$text);

?>

谢谢大家的帮助

4

1 回答 1

1

您需要从回调中返回一些内容,这些内容将替换为原始字符串。您肯定不想这样做echo,这会按执行顺序将值直接发送到输出。

但是,听起来您甚至不需要回调函数来删除数字周围的括号。

$str = preg_replace("/\[(.*?)\]/", "$1", $str);

键盘

于 2012-11-28T04:21:10.353 回答