如何在PHP中更改长字符串(文本)上的单词?
实施例: 文本:stackoverflow站点是最好的站点。
1)我想将第一个“网站”字符串更改为“网站”,但我不想更改第二个“网站”。
2)如何在不改变第一个“网站”的情况下更改第二个“网站”?
3)我怎样才能改变所有“网站”?
由于
答案 0 :(得分:2)
最简单的是替换所有出现的事件。只需在字符串
上使用str_replace
即可
$str = 'stackoverflow site is best site';
$str = str_replace('site', 'website', $str);
要替换单个实例(如第一个,第二个或其他),您可以使用substr_replace
,它允许您用文本替换某个字符范围。你必须先找到那个范围。您可以使用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 :(得分:0)
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;
?>
这会将所有“网站”更改为“网站”。