0

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

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

old - auld
old man - gadgie

如果你看上面,第一个词是未交换的,第二个是新词。但是,如果我将 old man 放在文本中,它会以“auld man”而不是“gadgie”的形式出现。

我知道这可能是因为我在“old man - gadgie”之前声明了“old-auld”

但另一个问题是:

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多个单词。

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

4

1 回答 1

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

关于整个词。您可能会查看正则表达式(\b尤其是)

于 2013-05-14T22:24:03.697 回答