如何在php中更改字符串上的单词

时间:2012-06-28 19:19:10

标签: php string

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

实施例: 文本:stackoverflow站点是最好的站点。

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

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

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

由于

2 个答案:

答案 0 :(得分:2)

所有出现

最简单的是替换所有出现的事件。只需在字符串

上使用str_replace即可
$str = 'stackoverflow site is best site';
$str = str_replace('site', 'website', $str);

Live example

首次出现

要替换单个实例(如第一个,第二个或其他),您可以使用substr_replace,它允许您用文本替换某个字符范围。你必须先找到那个范围。您可以使用strpos

$str = 'stackoverflow site is best site';
$search = 'site';
$start = strpos($str, $search);
$str = substr_replace($str, 'website', $start, strlen($search));

Live example

任何特定的发生

现在扩展前面的代码以替换第二个或第三个实例,您需要随后调用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));

Live example

我正在使用$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;
?>

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