-2

PHPで長い文字列(テキスト)の単語を変更するにはどうすればよいですか?

例: テキスト: stackoverflow サイトが最適なサイトです。

1) 最初の "site" 文字列を "website" に変更したいのですが、2 番目の "site" は変更したくありません。

2) 最初の「サイト」を変更せずに 2 番目の「サイト」を変更するにはどうすればよいですか?

3) すべての「サイト」を変更するにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

すべての出現

最も簡単なのは、すべてのオカレンスを置き換えることです。str_replace文字列で使用するだけです

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

実際の例

最初の出現

単一のインスタンス (最初、2 番目など)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前のコードを拡張して 2 番目または 3 番目のインスタンスを置き換えた後、前の結果のオフセットを呼び出してフィードする必要があります。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 に答える