Я хотел бы заменить предложения кодом в большом файле. Я пытался использовать str_replace, но поскольку в файле есть некоторые из тех же слов предложения, мой код заменяет их и не распознает предложение!
<?php
// sentences,txt
// 12345Temple of Cheope
// ..........
// 99999Cheope
set_time_limit(0);
$GetCodice=@fopen("sentences.txt", "r");
if ($GetCodice) {
while(!feof($GetCodice)) {
$StoreCodice=fgets($GetCodice,4096);
$codice='".'.substr($StoreCodice, 0, 6).'."'; // abcd
$msg=trim(substr($StoreCodice, 6)); // abcd
echo $msg."<br>";
$n=0;
$file = 'longfile.php';
replace_file($file, $msg, $codice);
}
fclose($GetCodice);
}
// From https://stackoverflow.com/questions/2159059/string-replace-in-a-large-file-with-php
function replace_file($path,$string, $replace)
{
set_time_limit(0);
if (is_file($path) === true)
{
$file = fopen($path, 'r');
$temp = tempnam('./', 'tmp');
if (is_resource($file) === true)
{
while (feof($file) === false)
{
file_put_contents($temp, str_replace($string, $replace, fgets($file)), FILE_APPEND);
}
fclose($file);
}
unlink($path);
}
echo $replace."<BR>";
return rename($temp, $path);
}
?>
Предложения упорядочены по убыванию их длины. Я думал, что этот порядок позволит избежать замены более короткого предложения или слова в более длинном предложении. Я ожидаю выхода
12345
.....
99999
но фактический результат
Temple of 9999
.....
99999
Могу ли я получить некоторую помощь?
заранее спасибо
12345Temple 12345Temple 12345Temple 99999Cheope
на это? :12345 12345 12345 99999
? - person sohaieb azaiez   schedule 25.05.2019