我正在使用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多个单词。
我最初没有添加我的代码,因为我认为它可能没有相关性。
答案 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
)