我有一個字符串,我想用另一個字符串替換字符串中的單詞。我知道上述不會工作,但我需要能夠使用一組模式和替換。搜索並用替換替換整個字符串
我想$ replacement_string是隻是「夾克」
有人能指出我到了一個解決方案?
感謝
我有一個字符串,我想用另一個字符串替換字符串中的單詞。我知道上述不會工作,但我需要能夠使用一組模式和替換。搜索並用替換替換整個字符串
我想$ replacement_string是隻是「夾克」
有人能指出我到了一個解決方案?
感謝
也許如果你調整了原來的代碼,就有點像這樣:
$patterns = array("/.*jacket.*/i", "/.*jeans.*/i");
$replacements = array("jacket", "jeans");
$string = 'Red jackets';
$replaced_string = preg_replace($patterns, $replacements, $string);
把在那裏將清除出字符串的其餘部分......,讓你只用那些.*
你想要的替換字符串。
感謝它正如我所願 – Ivar 2012-01-28 01:27:19
你知道上述不會工作怎麼樣?
審查的PHP開發者指南:http://php.net/manual/en/function.preg-replace.php
我所引述的部分值得關注:
模式
要搜索的模式。它可以是字符串或 字符串的數組。
更換
的字符串或使用字符串來替換陣列。如果此參數是 字符串,並且模式參數是數組,則所有模式將由該字符串替換爲 。如果模式和替換參數 都是數組,則每個模式將替換爲對應的替換 。如果替換數組中的元素數少於模式數組中的 ,則任何額外的模式將被替換爲空的 字符串。
那麼基本上所說的是,你可以讓你的模式數組是你想要替換的所有單詞。然後你可以使用「夾克」這個詞作爲你的替代品,然後任何時候你的模式陣列中的一個單詞被發現,它將用夾克代替它。
你有問題得到這個工作?
謝謝你告訴我這件事,正則表達式一直很難掌握,但它越來越清晰,它的功能非常強大,並且它是必不可少的。我不得不將這一個給予@summea,因爲他/她的回答是我需要的實際代碼。謝謝 – Ivar 2012-01-28 01:35:35
如何:
$pattern = array("/jacket/i","/jeans/i");
$replacement = array("jacket","jeans");
$string = 'Red jackets';
foreach ($pattern as $i => $p) {
if (preg_match($p, $string)) {
$replaced_string = $replacement[$i];
break;
}
}
echo $replaced_string;
@summea:你沒看見'break'嗎?這正是OP在他的問題中所描述的,不是嗎? – zerkms 2012-01-27 23:36:28
@summea:「我希望$ replacement_string只是」夾克「」---我的代碼就是這樣做的;-)如果這不是OP的意思 - 他需要開始更好地表達他的想法;-) – zerkms 2012-01-27 23:44:11
謝謝評論...!你需要一個字就是對的。但是,使用foreach循環可能會減慢代碼,具體取決於模式和替換數組的大小。我不確定當PHP的preg_replace可以與模式和替換數組一起工作時,foreach是必要的......但是,通常有不止一種方法來執行...使用PHP。 – summea 2012-01-27 23:58:56
改變了我原來的答案,更接近於原始的代碼。所有你可能要做的只是在原始模式字符串周圍添加'。*'......這樣就清除了字符串的其餘部分,併爲你留下一個替換字。 – summea 2012-01-27 23:57:07