Я пытаюсь создать галерею, которая вызывает имена изображений из плоской базы данных файлов, используя функцию PHP fgets. В галерее есть разные разделы, каждый со своим собственным изображением по умолчанию и небольшим списком изображений, которые могут выбрать пользователи. Все работает нормально, за исключением одной кнопки.
У меня есть одна кнопка на странице, которая должна сбросить все галереи до изображений по умолчанию, используя Javascript OnClick. Он работает точно так же, как я хочу, с одной маленькой заминки: он копирует разрыв строки в конце строки с символами на линии, разбивая Javascript.
Код нарушения:
function back(){ document.getElementById('back').className='back'; document.getElementById('one').className='cellcont'; //This should output the proper javascript, but does not <?php $a = fopen('c.txt','r'); if (!$a) {echo 'ERROR: Unable to open file.'; exit;} $b = fgets($a); echo "document.getElementById('i1').src='$b';"; fclose($a); ?> }
Как он выводит:
function back(){ document.getElementById('back').className='back'; document.getElementById('one').className='cellcont'; document.getElementById('i1').src='00.jpg ';}
Как вы можете видеть, конечная кавычка и точка с запятой попадают на следующую строку, и это прерывает кнопку.
С файлами, которые я использую сейчас, я могу обойти эту проблему, изменив «fgets ($ a)» на, «fgets ($ a, 7)», но мне нужно, чтобы он захватил всю строку, чтобы, если клиент решает ввести файл с более длинным именем, он не разбивает галерею на них.
Лучше всего использовать функцию php trim (). См. http://php.net/manual/en/function.trim.php
$b = trim(fgets($a));
Используйте rtrim()
.
В частности:
rtrim($var, "\r\n");
(Чтобы запросить обрезку других символов, перейдите в новую строку.)
$b = fgets($a); $b = preg_replace("/[\n|\r]/",'',$b);