如何阻止某些单词/字母在PHP中交换?

时间:2013-05-14 22:18:41

标签: php html str-replace

我正在使用php从一个textarea交换文本并在另一个textarea中显示,并且大部分都可以工作,但遗憾的是有些部分不适用。

我正在使用str_ireplace然后到目前为止,有60个不同的词,还有更多的词。我的问题的几个例子是:

old - auld
old man - gadgie

如果你看上面的话,第一个单词是未被破坏的,第二个是新单词。但是,如果我把老人放在文本中,它就会变成“笨蛋”而不是“小玩意儿”。

我知道这可能是因为我在“老人 - 小玩意儿”之前宣称“老了”

但另一个问题是:

yes - aye
no - nar

再次,第一个词是原始的,第二个是在交换之后。如果我写“昨天”它将显示“不久”或如果我有“鼻子”它将是“narse”

无论如何只能单独改变“是”,而不是它是另一个词的一部分吗?

有没有办法让“老人”和“老人”作为单独的替代品?

希望有意义

我的str_ireplace代码:

<form method="POST" action="post.php" >
<textarea name="status2" cols="50" rows="5"/>
<?php echo str_ireplace(array  ('old','awkward','all','again','behind','along','alright','hello','among','children','yes','child','kids','food','barnard castle','beer','book','blow','beautiful','bird','burst','brown','burn','boots','came','nice','cold','church','clothes','stick','dirty','clever','cloth','cow','crow','stool','crown','pigeon','dad','darlington','dead','do','devil','dont','do not','durham','down','drown','punch','ditch','eye','fall','trouble','condition','four','stupid','old man','go','going','jumper','give over','grandad','hold','get away','home'), 
array ('auld', 'aakwad', 'aall','agyen','ahint','alang','alreet','alreet','amang','bairns','aye','bairn','bairns','bait','barney','beor','beuk','blaa','bonny','bord','borst','broon','bourn','byeuts','cam','canny','card','chorch','claes','clag','clarty','clivvor','cloot','coo','craa','cracket','croon','cushat','da','darlo','deed','dee','deil','divvent','divvent','dorham','doon','droon','dunsh','dyke','Eee','faa','fash','fettle','fower','gaumless','gadgie','gan','gannin','ganzie','giveower','granda','haad','hadaway','hyem'),$status); ?> 

</textarea><br>

正如我所说,有60多个单词。

我最初没有添加我的代码,因为我认为它可能没有相关性。

1 个答案:

答案 0 :(得分:1)

关于第一部分。您应该首先替换更具体的单词。即“老人”,然后是“男人”或使用strtr

<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
The above example will output:
hello all, I said hi

关于整个词。您可以查看regexps(特别是\b