2013-03-29 134 views
-3

我想用PHP替换文本字符串中的某些单词& MySQL。替换mysql中的单词

例如, -

数据库中的文本列包含值“Word1 word2 word3 word4 word5 word3”。

我想用“新词”替换“word3”和“word4”。挑战不是取代也是“word3”的最后一个词

有什么建议吗?

+1

此问题没有显示任何研究工作。 **做你的作业很重要**。告诉我们你发现了什么,***为什么它不符合你的需求。这表明你已经花时间去尝试帮助你自己了,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案。 [FAQ](http://stackoverflow.com/questions/how-to-ask)。 –

+0

建议学习字符串函数,如'str_replace()' – samayo

+0

替换数据库或输出中? – hjpotter92

回答

0

可以使用通配符字符和控制符号,以取代%字%或%wo.d%以同样的方式,你可以停止更换如果达到符号的某些计数

+0

另外,如果你想代替像'word1,word2,word3,word4,word3'这样的smth,你可以'UPDATE table SET col ='word,1 word2 ,wordX,word4,word3'where col ='word1,word2,word3,word4,word3'但我不认为它是通用的做事方法,LIKE搜索也不会有太大帮助 –

0

的MySQL:

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

注意word3word4之前和之后的额外空格。


基于评论:

UPDATE `tableName` 
SET `field` = TRIM(REPLACE(' word3 word4 ', ' newword ', CONCAT(' ', `field`))); 
+0

嘿谢谢。我想用一个单词替换word3和word4。从上面的语句也可以看出,word3的两个实例都不会被替换吗? – user2131970

+0

但它不会处理最后的话。在后面看到“挑战不是取代也是”word3“的最后一个单词” –

+0

它将处理最后一个单词,因为REPLACE参数中的尾部空格。但我认为它不会处理“word3”或“word4”是* first *这个词的情况。也许把'field'改成'CONCAT(',field)'? –

0

你可以使用这个PHP脚本来代替 “WORD3” 和 “word4” 到 “newword”。

< PHP

$ ARR =阵列( “字词1”, “单词2”, “WORD3”, “word4”, “的word5”, “WORD3”, “word4”)?; (str_replace(“word3”,“newword”,$ arr,$ i));

print_r(str_replace(“word4”,“newword”,$ arr,$ i));

echo“Replacements:$ i”; >

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"); 
?> 

此分割的话到一个数组,替换所有word3word4newword除了用于阵列的最后一个元素,然后加入词语回为串。输出如期:

Word1 word2 newword newword word5 word3