從我所看到的,問題在於,如果您直接將所有 'A' 取代為 'T',您無法確定之後哪些 'T' 應該被取代為 'A'。這可以透過簡單地將所有 'A' 替換為另一個字元(例如 '_' 或您喜歡的任何字元)來解決,然後將所有 'T' 替換為 'A',然後將所有 '_'(或您選擇的任何字元)替換為 'A'。
<?php
$dna = "AGTCTGCCCTAG";
echo str_replace(array("A","G","C","T","_","-"), array("_","-","G","A","T","C"), $dna); ?>
雖然我不知道 Perl 中的音譯是如何運作的(但我記得它有點類似於 UNIX 的 "tr" 命令),我會建議使用以下函式來「切換」單一字元。
<?php
function switch_chars($subject,$switch_table,$unused_char="_") {
foreach ( $switch_table as $_1 => $_2 ) {
$subject = str_replace($_1,$unused_char,$subject);
$subject = str_replace($_2,$_1,$subject);
$subject = str_replace($unused_char,$_2,$subject);
}
return $subject;
}
echo switch_chars("AGTCTGCCCTAG", array("A"=>"T","G"=>"C")); ?>