我試圖使這個工作。我想在給定的位置之間替換句子的某些部分,然後用變化顯示整個句子。使用下面的代碼,我可以進行更改,但我不知道如何將其餘部分放在一起。提取併合並不同位置之間的字符串
我有兩個陣列,一個是女性名字出現的位置,另一個是男性名字。當一個女人在一個男人之前,代碼用「她」代替代詞「他的」。我需要的最後一件事是重建與所做的更改的句子,但我不知道如何提取句子的其餘部分(結果,例如,從位置0到20(瑪麗亞她的衣服,但是)和36到51(Lorena她的狗),但我需要從20到36(彼得的牛仔褲)和51到最後(胡安他的車)提取合併他們的位置)。
結果應該是:「瑪麗亞她的衣服,但彼得他的牛仔褲羅蕾娜她的狗胡安他的車」。我會很感激任何幫助,我一直在尋找其他類似的問題,但我什麼也沒找到。
<?php
$womenpos = array("0","36"); //these arrays are just examples of positions
$menpos = array("20","51"); //they will change depending on the sentence
$sentence = "Maria his dress but Peter his jeans Lorena his dog Juan his car";
echo $sentence."\n";
foreach ($womenpos as $index => $value) {
$value2 = $menpos[$index];
if($value < $value2) {
echo "\nWoman(" . $value . ") is before man(" . $value2 . ")\n";
$end = ($value2 - $value);
$improved = str_replace(' his ', ' her ',
substr($sentence, $value, $end));
echo $improved."\n";
} else {
$improved = "Nothing changed";
echo $improved;
}
}
目前還不清楚你問什麼。 – felipsmartins
我已經用(希望)更好的解釋更新了這個問題。 –
重要的問題:你是否試圖用'她'代替'她'這個詞(如果是這樣,一個沒有任何位置信息的正則表達式替換工作就沒問題,這是一個oneliner),還是你試圖用一個句子替換數據位置+長度,在這種情況下,您只需執行子字符串分割,然後將其加入替換項中 –