我有一个示例代码:
$text = "abc ABC def ghi Abc aBc xyz";
$search = "abc"
$string = str_replace(" ".trim($search)." ", 'DEF', $text);
echo $string;
结果是:“abc ABC def ghi DEF aBc xyz
”//仅Abc更改
但结果恰恰是:“abc DEF def ghi DEF DEF xyz
”
如何解决?
答案 0 :(得分:2)
您可以使用:
$regex = '/(\s)'.trim($search).'(\s)/i';
preg_match_all($regex, $text, $tmp3)
答案 1 :(得分:1)
您可以对str_ireplace
的3个变体使用str_replace
(不区分大小写abc
)3次
<?php
$text = "abc ABC def ghi Abc aBc xyz";
$search = "abc";
$string = str_ireplace(' ' . trim($search), ' DEF', $text);
$string = str_ireplace(' ' . trim($search) . ' ', ' DEF ', $text);
$string = str_ireplace(trim($search) . ' ', 'DEF ', $text);
echo $string;
或者您可以使用正则表达式:
$text = "abc ABC def ghi Abc aBc xyz";
$search = "abc";
$string = preg_replace("/(\s*)abc(\s*)/i", '$1DEF$2', $text);
echo $string;
答案 2 :(得分:0)
您需要尝试不区分大小写的字符串替换。 PHP中的str_ireplace
http://codepad.org/atBbj8Kp
<?php
$text = "abc ABC def ghi Abc aBc xyz";
$search = "abc";
$string = str_replace(" ".trim($search)." ", 'DEF', $text);
echo $string;
echo PHP_EOL;
$string = str_ireplace(" ".trim($search)." ", 'DEF', $text);
echo $string;
?>
答案 3 :(得分:0)
预期结果实际上是:
abc DEF def ghi DEF DEF xyz
首先'abc'与搜索字符串中的空格不匹配。
答案 4 :(得分:0)
我认为这就是你要找的东西?基本上它使用不区分大小写的搜索并替换str_ireplace
。
<?php
$text = 'abc ABC def ghi Abc aBc xyz';
$search = 'abc';
$string = str_ireplace(trim($search), 'DEF', $text);
echo $string;
?>
输出:DEF DEF def ghi DEF DEF xyz
答案 5 :(得分:0)
str_replace是您的任务的错误工具。
试试这个例子:
$string = stri_replace(trim($search), 'DEF', $text)
OR
$string = preg_replace('@\b' . trim($search) . '\b@i', 'DEF', $text);
如果问题中的额外空格是为了防止部分匹配 - 你需要preg_replace
版本,除非你不在乎它不会找到/替换第一个/最后一个字符串
答案 6 :(得分:0)
$string = str_ireplace( $search , 'DEF', $text);
Out put:
DEF DEF def ghi DEF DEF xyz
如果你想修剪替换的输出:
$string = str_ireplace($search, 'DEF', $text);
$string = str_ireplace(" DEF ", 'DEF', $string);
Out Put:
DEFDEFdef ghiDEFDEF xyz