2012-04-01 24 views
-1

一般的な単語の頭字語と同義語を含む配列やファイル(できればそれを更新することができるようにファイル)を読み込み、その文字列を検索して文字列に置き換える必要があります。たとえば、CBNが「Can not Be Negated」を表しているとします。私は "CBN king"を "Can not Be Negated king"に置き換える必要があります。どのようにPHPでこれを行うことができますか?php string同義語replace function

+0

2列からロードするのはちょっと難しいでしょう。CSV –

答えて

1

あなたがそう(translate.ini)のようなあなたの変換テーブルを格納するためにINIファイルを使用することができます。

CBN  = "cannot be negated" 
TTYL = "talk to you later" 
. 
. 
. 

そうのような配列にファイルを読む:

$translate = parse_ini_file('/path/translate.ini'); 

彼らのフルバージョンとすべての頭字語を置き換えます

$toTranslate = "This CBN but it's too late so TTYL"; 
$translated = str_ireplace(array_keys($translate), array_values($translate), $toTranslate); 

(私はケースの問題を回避するために)(置き換える str_ 場合は使用を注意してください)。

+0

私はこれが好きです。シンプルで簡単です。ありがとうございました。 – LordZardeck

1

非常に頻繁に(またはリアルタイムで)行う必要があるものではない場合は、最初に「辞書」ファイルをコンパイルすることができます(頭字語と同義語を含むタブ区切り)そのすべての内容をハッシュテーブルに格納し、ハッシュテーブル内の各要素のstr_replace(key、value)をソース文字列に対して実行します。

アップデート:ここにコードがどのように見えるか:

$sourceString = 'My very long string full of acronyms like CBN'; 
$target = ''; 

//replace the following with file parsing routine 
$myDict = array() 
$myDict['CBN'] = 'Cannot Be Negated'; 
... 
$myDict['PCBN'] = 'Probably Cannot Be Negated'; 
$myDict['MDCBN'] = 'Most Definitely Cannot Be Negated'; 

//replace acronyms with synonyms 
foreach($myDict as $synonym=>$acronym) 
    $target = str_replace($target, $acronym, $synonym) 

アップデート2:

// reading values from file: 
$fp = fopen('dictionary.txt'); 

while (!eof($fp)) { 
    $line = fgets($fp); 

    $values = explode("/t", $line); 

    //add to dictionary 
    $myDict[$values[0]] = $values[1]; 
} 

fclose($fp); 
+0

私はそれを時々微調整するかもしれませんが、それは私が定期的にやることではありません。あなたは例を挙げることができますか? – LordZardeck

+0

私はいくつかのサンプルコードで私の答えを更新しました。 – BluesRockAddict

+0

どのようにファイルから配列に取得するのですか? – LordZardeck