-3

PHP と MySQL を使用して、テキスト文字列からいくつかの単語を置き換えたいと考えています。

例えば ​​-

データベースのテキスト列には、値「Word1 word2 word3 word4 word5 word3」が含まれています。

「word3」と「word4」を「newword」に置き換えたい。課題は、「word3」でもある最後の単語を置き換えないことです。

助言がありますか?

4

4 に答える 4

0

MySQL:

UPDATE `tableName`
SET `field` = REPLACE( ' word3 ', ' newword ', REPLACE(' word4 ', ' newword ', `field`) );

word3との前後の余分なスペースに注意してくださいword4


コメントに基づく:

UPDATE `tableName`
SET `field` = TRIM( REPLACE(' word3 word4 ', ' newword ', CONCAT( ' ', `field` )) );
于 2013-03-29T13:54:13.460 に答える
0

ワイルドカード文字と制御記号を使用して、%word% または %wo.d% を置き換えることができます。これは、特定の数の記号に達した場合に置換を停止できるのと同じ方法です。

于 2013-03-29T13:50:49.287 に答える
0

このphpスクリプトを使用して、「word3」と「word4」を「newword」に置き換えることができます。

<?php

$arr = array("word1","word2","word3","word4","word5","word3","word4");

print_r(str_replace("word3","newword",$arr,$i));

print_r(str_replace("word4","newword",$arr,$i));

echo "置換: $i"; ?>

于 2013-03-29T14:02:38.780 に答える
0

PHP の場合:

<?php
$mystr = "Word1 word2 word3 word4 word5 word3";
$mywords = explode(' ', $mystr);
for ($i = 0; $i < count($mywords)-1; $i++) {
  if ($mywords[$i] == 'word3' || $mywords[$i] == 'word4') {
    $mywords[$i] = 'newword';
  }
}
$newstr = implode(' ', $mywords);
print("newstr = $newstr");
?>

これにより、単語が配列に分割され、配列の最後の要素を除くword3すべてのandが置換され、単語が結合されて文字列に戻されます。出力は期待どおりでした:word4newword

Word1 word2 newword newword word5 word3
于 2013-03-29T14:08:53.300 に答える