php str_replace() 搜索中的重复词
php str_replace() duplicate words on search
正在尝试使用 str_replace()
搜索和替换一些内容。如果 $find
是唯一的,它工作正常,但是一旦 $find
有重复的单词,整个事情就搞砸了。
例如style1
将应用于两个 $find[0] && $find[1]
,因为两者都是 Lorem Ipsum
,同样适用于 dummy
。
如何处理这种情况?
$find = Array(
[0] => Lorem Ipsum
[1] => Lorem Ipsum
[2] => typesetting
[3] => dummy
[4] => dummy
);
$replace = Array(
[0] => style1
[1] => style2
[2] => style3
[3] => style4
[4] => style5
);
$string = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.";
$result = str_replace($find,$replace,$string);
echo $result;
您可以使用 str_replace_first
的实现,如 this question 中所述,并迭代 $find
和 $replace
数组,替换每个值在$find
仅数组:
function str_replace_first($search, $replace, $subject) {
if (($pos = strpos($subject, $search)) !== false) {
return substr_replace($subject, $replace, $pos, strlen($search));
}
return $subject;
}
$result = $string;
foreach ($find as $key => $search) {
$result = str_replace_first($search, $replace[$key], $result);
}
echo $result;
输出:
style1 is simply style4 text of the printing and style3 industry.
style2 has been the industry's standard style5 text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.
正在尝试使用 str_replace()
搜索和替换一些内容。如果 $find
是唯一的,它工作正常,但是一旦 $find
有重复的单词,整个事情就搞砸了。
例如style1
将应用于两个 $find[0] && $find[1]
,因为两者都是 Lorem Ipsum
,同样适用于 dummy
。
如何处理这种情况?
$find = Array(
[0] => Lorem Ipsum
[1] => Lorem Ipsum
[2] => typesetting
[3] => dummy
[4] => dummy
);
$replace = Array(
[0] => style1
[1] => style2
[2] => style3
[3] => style4
[4] => style5
);
$string = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.";
$result = str_replace($find,$replace,$string);
echo $result;
您可以使用 str_replace_first
的实现,如 this question 中所述,并迭代 $find
和 $replace
数组,替换每个值在$find
仅数组:
function str_replace_first($search, $replace, $subject) {
if (($pos = strpos($subject, $search)) !== false) {
return substr_replace($subject, $replace, $pos, strlen($search));
}
return $subject;
}
$result = $string;
foreach ($find as $key => $search) {
$result = str_replace_first($search, $replace[$key], $result);
}
echo $result;
输出:
style1 is simply style4 text of the printing and style3 industry.
style2 has been the industry's standard style5 text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.