Вы просто не можете, \ r возвращается к началу строки. Следующий эхо начинается там, поэтому ваша первая часть This is just a simple text
напечатана на том, что уже существует.
Если вы хотите очистить оставшийся текст, добавьте пробелы после текста, чтобы перезаписать оставшуюся часть Progress: $percent% just a simple progress line with php
Что-то вроде этого должно сделать:
echo "This is just a simple text \nProgress: $percent% just a simple progress line with php\r";
Это довольно сложно, если вы измените второй текст, чтобы лучше подходил примерно так (не проверено):
$percent = 0;
for($i=0; $i<=1000000000; $i++){ //big number to take time looping and testing
if( ($i % 10000000) == 0 ){ //thats mean each one percent do something
$first_line = "This is just a simple text";
$second_line = "Progress: $percent% just a simple progress line with php\r";
$diff = strlen($second_line) - strlen($first_line);
echo $first_line.str_repeat(' ',$diff)."\n".$second_line;
$percent++;
}
}
Идея состоит в том, чтобы создать вывод эха с добавлением достаточного количества пробелов, чтобы покрыть вторую строку на каждой итерации. Использование двух переменных и их длины позволяет вычислить эту разницу, а затем использование str_repeat позволяет создать правильное число пробелов.