PHPで長い文字列(テキスト)の単語を変更するにはどうすればよいですか?
例: テキスト: stackoverflow サイトが最適なサイトです。
1) 最初の "site" 文字列を "website" に変更したいのですが、2 番目の "site" は変更したくありません。
2) 最初の「サイト」を変更せずに 2 番目の「サイト」を変更するにはどうすればよいですか?
3) すべての「サイト」を変更するにはどうすればよいですか?
ありがとう
最も簡単なのは、すべてのオカレンスを置き換えることです。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
置換する単語を決定するために変数を使用しています。
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;
?>
これにより、すべての「サイト」が「ウェブサイト」に変更されます。