Replace написав:Ось тут десь помилка зарита, не зовсім зрозуміла логіка:
$editline=explode(',', $currentline);
if ($editline[0]==$imgfilename) {
$photo[$line_num]=$imgfilename.','.trim( str_replace(chr(13).chr(10), '<br/>', $_POST['textarea']))."\n";
}
fwrite($pagefile, $photo[$line_num]);
Навіщо там explode? Він походу все і рубає.
в даний скрип передаються методом POST два значення:
$_POST['imgfilename'] - ім’я картинки, опис якої відредаговано і треба записати
$_POST['textarea'] - сам опис
є текстовий файл ('data/photo.db') в форматі - один рядок - один запис: два поля(розділені комою)
перше поле - ім’я файла з картинкою, друге поле - тект опису цієї картинки.
починаємо перебирати файл по рядках.
почергово explode присвоює масиву $editline ці поля. відповідно $editline[0] - ім’я файлу з картинкою
як тільки $editline[0] співпаде з переданим $imgfilename=$_POST['imgfilename']; , то слід замінити опис (при цьому в самому описі міняються CR/CL на <br/>)
так що explode нічого не рубає.
поставив і уважно протрасив в eclipse - $_POST['textarea'] - має повне,не обрубане значення - з комами.
$photo[$line_num] теж не обрубане!
додаю скріншот з debug:
редагував останній , 6-ий елемент масиву
видно, що $photo[5] має текс доданий до коми і після коми.
тисну крок далі - на моніторі текст БЕЗ доданого після коми
виходить - обрізає fwrite() ?
НІ!!!
я просто БАРАН! файл записаний вірно, але в скрипті виводу на екран теж використана explode з розділовою комою!!!
і вона просто те, що після коми - присвоює елементу масиву, який на екран не виводиться!!!
найпростішим рішенням є замінити кому для розділу полів у файлі на щось хитріше - наприклад на #separator#
УРА, все працює!!!
дякую, закачав.
початок дещо застарів - ну нема вже інету через модеми , Netscape browse давно помер, але туди ж пр’ямує і тогочасний переможець - IE.
але то деталі, сподіваюся що принципи розробки там дано добре .