如何在php中使用str replace
数组([0]=>Array([trigger]=>E[alttext]=>C)[1]=>Array([trigger]=>F[alttext]=>D)) 以及: 但是我想展示如何在php中使用str replace,php,regex,preg-replace-callback,Php,Regex,Preg Replace Callback,数组([0]=>Array([trigger]=>E[alttext]=>C)[1]=>Array([trigger]=>F[alttext]=>D)) 以及: 但是我想展示abcd 提前谢谢 我认为问题在于,您总是返回原始字符串进行替换-您需要进行累积更改。因此,在这里,它使用原始字符串设置$text,每次都会替换此字符串 $text = 'A B E F'; foreach ($trigger as $tdata) { $tr = $tdata->trigge
abcd
提前谢谢 我认为问题在于,您总是返回原始字符串进行替换-您需要进行累积更改。因此,在这里,它使用原始字符串设置
$text
,每次都会替换此字符串
$text = 'A B E F';
foreach ($trigger as $tdata) {
$tr = $tdata->trigger;
$ttext = $tdata->alttext;
$text= str_replace($tr, $ttext, $text);
}
echo $text;
使用此方法时唯一需要注意的是,如果先前替换的文本是以后搜索并替换的文本。因此E
->F
和F
->D
将是add
更新:
用你的测试数据
$trigger = Array ( Array ( "trigger" => "E", "alttext" => "C" ) ,
Array ( "trigger" => "F", "alttext" =>"D" ) );
$text = 'A B E F';
foreach ($trigger as $tdata) {
$tr = $tdata['trigger'];
$ttext = $tdata['alttext'];
$text= str_replace($tr, $ttext, $text);
}
echo $text;
考虑这一点(假设这些行与数据库行相似):
我们可以通过以下两种方法一次性完成:
您可以传递str_replace两个对应的查找和替换数组:
echo str_replace(array_column($rows, 0), array_column($rows, 1), 'A B E F');
输出:
A B C FA B E D
A B C D
A B C D
或者将strtr与数组(from=>to)一起使用(['E'=>'C','F'=>'D']
):
输出:
A B C FA B E D
A B C D
A B C D
您必须构建find和replacement数组,并使用适合您的方法之一。注意str_replace和strtr replace的方式略有不同。不确定如何得到结果,可以显示您的代码。
Array([0]=>Array([trigger]=>E[alttext]=>C)[1]=>Array([trigger]=>F[alttext]=>D))
my database structure如果您的基本数据是数组,请将以下行更改为使用[]
-$tr=$tdata['trigger']$ttext=$tdata['alttext']代码>,我得到的输出是A B C D
我做了但没有结果:(只有最后一个是更新的结果=A B E我添加了我测试过的内容。数组([0]=>数组([trigger]=>E[alttext]=>C)[1]=>数组([trigger]=>F[alttext]=>D))
我的数据库结构
A B C D