-2

如何在 PHP 中更改长字符串(文本)上的单词?

示例:文本:stackoverflow 站点是最佳站点。

1)我想将第一个“站点”字符串更改为“网站”,但我不想更改第二个“站点​​”。

2)如何在不更改第一个“站点”的情况下更改第二个“站点​​”?

3)我怎样才能改变所有的“网站”?

谢谢

4

2 回答 2

2

所有出现

最简单的方法是替换所有出现。只需str_replace在您的字符串上使用

$str = 'stackoverflow site is best site';
$str = str_replace('site', 'website', $str);

活生生的例子

首次出现

要替换单个实例(如第一个或第二个等),您可以使用substr_replacewhich 允许您用文本替换某个字符范围。不过,您必须先找到该范围。你可以使用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变量来确定要替换的单词。

于 2012-06-28T19:33:24.780 回答
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;
?>

这会将所有“站点”更改为“网站”。

于 2012-06-28T19:25:40.127 回答