如何在 PHP 中更改长字符串(文本)上的单词?
示例:文本:stackoverflow 站点是最佳站点。
1)我想将第一个“站点”字符串更改为“网站”,但我不想更改第二个“站点”。
2)如何在不更改第一个“站点”的情况下更改第二个“站点”?
3)我怎样才能改变所有的“网站”?
谢谢
最简单的方法是替换所有出现。只需str_replace
在您的字符串上使用
$str = 'stackoverflow site is best site';
$str = str_replace('site', 'website', $str);
要替换单个实例(如第一个或第二个等),您可以使用substr_replace
which 允许您用文本替换某个字符范围。不过,您必须先找到该范围。你可以使用strpos
它。
$str = 'stackoverflow site is best site';
$search = 'site';
$start = strpos($str, $search);
$str = substr_replace($str, 'website', $start, strlen($search));
现在扩展之前的代码以替换第二个或第三个实例,您需要随后调用strpos
并提供之前结果的偏移量。这是一个使用for
循环的简单方法。
$str = 'stackoverflow site is best site';
$search = 'site';
$count = 2;
$start = strpos($str, $search);
for($i = 0; $i < $count - 1; $i++)
$start = strpos($str, $search, $start + 1);
$str = substr_replace($str, 'website', $start, strlen($search));
我正在使用$count
变量来确定要替换的单词。
1)这是您更改第一个“站点”的方式:
<?php
$string="stackoverflow site is best site.";
echo "<strong>First:</strong> ".$string;
$string_replace=preg_replace('/site/', 'website', $string, 1);
echo "<br /><strong>After:</strong> ".$string_replace;
?>
2) 以下是更改最后一个“站点”的方法:
<?php
$string="stackoverflow site is best site.";
echo "<strong>First:</strong> ".$string;
$pos=strrpos($string, 'site');
$string_replace=substr_replace($string, 'website', $pos, strlen('site'));
echo "<br /><strong>After:</strong> ".$string_replace;
?>
3) 以下是更改所有“站点”的方法:
<?php
$string="stackoverflow site is best site.";
echo "<strong>First:</strong> ".$string;
$string_replace=str_replace("site", "website", $string);
echo "<br /><strong>After:</strong> ".$string_replace;
?>
这会将所有“站点”更改为“网站”。