Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 804
от 04.11.2007, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 447, Экспертов: 48
В номере:Вопросов: 11, Ответов: 21


Вопрос № 106776: Здравствуйте граждане php`шники. Такая вот у меня проблемка: Открываю файл для чтения, читаю из него данные и потом сортируется массив и опять записывается в файл. Соритровки пока ещё нет, поэтому у меня он просто записывает записывает данные...
Вопрос № 106813: Добрый день, уважаемые эксперты. Вопрос может быть и не совсем по теме форума, однако попробую его сформулировать здесь. Имеется локальная база данных по абонентам с ничислениями, оплатой, корректировкой и субсидиями. всего абонентов порядка 2500...
Вопрос № 106918: Здравствуйте. Подскажите, пожалуйста: Картинки хранятся в БД(тип blob). Необходимо загрузить картинку из БД и расположить на уже готовом изображении, созданном при помощи библиотеки GD. Получилось вывести картинку по следующему примеру:<b...
Вопрос № 106921: Уважаемые эксперты, подскажите, почему не показываются ошибки, связаные с класами в PHP5? ...
Вопрос № 107012: Доброго времени суток, уважаемые эксперты. Вопрос в следующем: - вебсервер Аппач; - авторизация .htaccess; - вход по умолчанию на index.php. В какой переменной будет находится логин вошедшего на сайт? Необходимо перенаправлят...
Вопрос № 107096: Здраствуйте у меня задача. Я защищаю файл от загрузок по средствам формы, т.е. заполнив форму если все верно читаю файл и вывожу на печать предварительно сформировав заголовки: if( !is_error() ){ /* * @ load file...
Вопрос № 107185: Доброе время суток!!! Вопрос следующий: Есть сайт на хостинге jino-net.ru По ftp залит движок mamba-cms. Нужно задать аттрибуты на заданный каталог и все файли и подкаталоги, находящиеся в нем (например, что-то наподобие CHMOD 777).<...
Вопрос № 107190: список файлов вида ..data/$yaer-$month-$day.txt => $mass; то есть файлы в /data/ 07-09-12.txt......06-08-13.txt надо поместить в массив и вывести в календарь. что бы при клике на дату генерировалась ссылка вида http://...../index.php?d...
Вопрос № 107205: Здравствуйте уважаемые эксперты! Помогите мне разобраться, что я делаю не так ... Мне нужно чтобы происходила проверка корректности переменной функцией preg_match ...
Вопрос № 107328: Здравствуйте уважаемые! Читаю из файла данные построчно и мне нужно, чтобы каждая строка была преобразована в массив. Данные в строке разделены пробелами, но сложность в том, что количество пробелов между данными нефиксировано. Использовал та...
Вопрос № 107331: Здравствуйте. Сайт у меня состоит из многих папок. Необходимо обеспечить вставку кода header и footer. Но чтобы путь был с http:. То есть, чтобы разместив в одном месте необходимый код, в любой из директорий этот код вызывался бы одинаковой коман...

Вопрос № 106.776
Здравствуйте граждане php`шники.
Такая вот у меня проблемка:
Открываю файл для чтения, читаю из него данные и потом сортируется массив и опять записывается в файл. Соритровки пока ещё нет, поэтому у меня он просто записывает записывает данные в обратном порядке. (код в приложении)
В файле данные имеют такую структуру:
Данные1.1>>Данные1.2>>Данные1.3
Данные2.1>>Данные2.2>>Данные2.3
Данные3.1>>Данные3.2>>Данные3.3
........

Всё работает прекрасно, кроме одного: почему-то, при записи, в конечном файле добавляется одна пустая строка в конце. Добавляется она потому, что в файле последний элемент каждой строки закачивается символами «/n», т.е. переходит на новую строчку. Но что то никак не соображу, как убрать эту пустую строку, чтобы она не добавлялась. Пытался вырезать у последнего элемента последний символ, т.к. именно он должен быть символом перехода на новую строку, но при этом вырезался один символ из данных и пустая строка всё равно присутствовала.
Так как можно убрать добавление пустой строки?

Приложение:

Отправлен: 25.10.2007, 19:54
Вопрос задал: Стас Тельнов/[анти]КИЛЛЕР (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: GINes
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!

Это можно решить следующим образом:
во-первых убираем конкантенацию символов перехода на другую строку из строки -
$prox_ball[$i-1]=$prox_ball[$i-1]." ";
оставляем только
$prox_ball[$i-1]=$prox_ball[$i-1];
во-вторых добавляем в цикл записи данных в файл следующую строчку -
if($i!=$kol_vo_abiturientov)fwrite(" ");
то есть:
for ($i=$kol_vo_abiturientov;$i!=-1;$i--)
{
if($i!=$kol_vo_abiturientov)fwrite(" ");
if ($i==-1) $prox_ball[0]=substr($prox_ball[0],2,strlen($prox_ball[0])-2);
fwrite($file_dannyx,$fio[$i].">>".$nabr_ball[$i].">>".$prox_ball[$i]);
//$i--;
}

Полностью исправленный код в приложении.

Приложение:

Ответ отправил: GINes (статус: 8-ой класс)
Ответ отправлен: 25.10.2007, 21:25
Оценка за ответ: 3
Комментарий оценки:
К сожалению, ваш код по прежнему оставляет последнюю строку в файле, но ещё плюс добавляет лишнюю строку перед всеми запясями кроме первой.... Так что только 3

Отвечает: Mamont
Здравствуйте, Стас Тельнов/[анти]КИЛЛЕР!

При чтении текстового файла Вы считываете файл построчно, вместе с признаком переноса (новой) строки. А при записи в файл необходимо его добавлять в конце каждой строки.
Настойчиво рекомендую избавляться от него во время чтения файла (например функцией trim() или rtrim() ), поскольку в будущем это может осложнить Вам задачу (например изменится порядок столбцов и перенос строки будет стоять не там где нужно). Можно убедиться в том, что переносы строк идут вместе с данными, посмотрев исходный текст html-страницы в браузере.

Соответственно изменяем чтение файла:
$dat=trim(fgets($file_dannyx));

Также, сразу после этой строки, рекомендую добавить проверку на присутствие данных:
if( $dat!='' ){
....
$i++;
}
Убираем строку (где нужно мы добавим переносы при записи):
$prox_ball[$i-1]=$prox_ball[$i-1]." ";

Ну и запись файла, с добавлением переноса строк, если это не последняя строка ($i!=0):
for ($i=$kol_vo_abiturientov;$i>=0;$i--)
{
fwrite($file_dannyx,$fio[$i].">>".$nabr_ball[$i].">>".$prox_ball[$i]);
if( $i!=0 ) fwrite($file_dannyx," ");
}

---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 3-ий класс)
Ответ отправлен: 25.10.2007, 23:18
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за ваш ответ, я просто не знал о такой полезной функции, как trim.
Теперь всё работает так, как надо!


Вопрос № 106.813
Добрый день, уважаемые эксперты. Вопрос может быть и не совсем по теме форума, однако попробую его сформулировать здесь.
Имеется локальная база данных по абонентам с ничислениями, оплатой, корректировкой и субсидиями. всего абонентов порядка 25000 лицевых счетов. Структура локальной базы данных такова, что все данные по начаслениям и оплатам по абонентам хранятся в файле формата *.DAT но вытащить в *.DBF возможно. Веду вот к чему. Хочу сделать WEB базу данных (желательно в связке PHP+mySQL), чтобы абонент смог просмотреть ВСЕ свои начисления, льготы, оплаты и корректировки, когда они у него были сделаны (т.е. привязать платеж или начисление к дате), за любой интервал времени. Никак не могу сообразить каким образом организовать хранение данных в mySQL. Ну со структурой основной таблицы вроде ясно (лицевой счет, Улица, Дом, Индекс дома, корпус, Квартира, Индекс квартиры), а вот как организовать хранение данных по начислениям и оплатам - что то не вытанцовывается. Проблема в том, что из месяца в месяц постоянно в один день происходит начисление по абоненту (Скажем 01.11.2007 начислено 100 рублей), а вот оплаты поступают нерегулярно, т.е. в одном месяце их может быть несколько, а вдругом их может вообще не быть. То же самое и с корректировками, субсидиями и льготами. В локальной базе данных всё привязывается лицевому счету абонента, а потом к датам. Подскажите, может быть кто-нибудь уже решал подобные задачи, как организовать хранение таких данных в mySQL? В общем, подскажите как структурировать таблицы по начислениям и оплатам. Заранее спасибо.
Отправлен: 26.10.2007, 02:40
Вопрос задал: Савченко И.В. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mamont
Здравствуйте, Савченко И.В.!

Для этого можно использовать еще одну таблицу с операциями. Поля:
ID записи (уникальное)
ID пользователя (берется из первой таблицы - по кому проходит операция)
Дата - дата проведения операции
Операция - начисления, оплата, корректировка и субсидия
Сумма (положительная - пополнение л/с, отрицательная - списание с л/с; с отрицательными суммами удобнее организовывать различные общие отчеты - например подсчитать насколько изменился баланс за промежуток времени)
а дальше на ваше усмотрение- примечание к операции, откуда пришел платеж и тд.

---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 3-ий класс)
Ответ отправлен: 26.10.2007, 03:01
Оценка за ответ: 5
Комментарий оценки:
Спасибо за проявленный интерес. Но мне кажется использовать одну таблицу для хранения данных по всем абонентам может тормозить выборку при больших объемах данных. А вот применение положитульных и отрицательных сумм весьма интересная идея.

Отвечает: Powoditch konstantin
Здравствуйте, Савченко И.В.!
Я бы сделал так:
Создал 2 таблицы(оплаты, начисления) и 1 вспомогательную.
Таблица оплаты:
id | id_scheta | id_payment | date_payment | summ

Таблица начисления:
id | id_scheta | id_charge | date_charge | summ

Вспомогательная таблица:
id | id_scheta | id_payment id_charge
Служит для связывания оплат и начислений с номером счета.
Думаю все поля ясны.
Ответ отправил: Powoditch konstantin (статус: 7-ой класс)
Ответ отправлен: 26.10.2007, 03:02
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за оказанное внимание. Идея разделить виды движений по таблицам очень интересная. Думаю организовать под каждое движение свою таблицу + Вспомогательную таблицу для связывания


Вопрос № 106.918
Здравствуйте.
Подскажите, пожалуйста:
Картинки хранятся в БД(тип blob). Необходимо загрузить картинку из БД и расположить на уже готовом изображении, созданном при помощи библиотеки GD.
Получилось вывести картинку по следующему примеру:

$sqlquery_res="SELECT picture from picture where id=\'4\';";
$res=mysql_query($sqlquery_res,$connection) or
die(mysql_errno($connection).mysql_error($connection));
$img=mysql_fetch_row($res);
$Image=$img[0];
header("Content-type:image/png");
echo "$Image";

Но при попытке копировать изображение на уже готовое
$im=imagecreate(500,500);
$color=imagecolorallocate($im,255,0,0);
imagecopy($im,$Image,10,10,0,0,100,100);

возникает ошибка:
imagepng(): supplied argument is not a valid Image resource
Отправлен: 26.10.2007, 19:12
Вопрос задала: Степанова Дарья Олеговна (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Powoditch konstantin
Здравствуйте, Степанова Дарья Олеговна!
Для начала следует узнать тип картинки. Потом вместо $im=imagecreate(500,500);
можно написать $im=imagecreatefromjpeg(gif,png в зависимости от типа)($Image);

Только вот я не знаю подхватит ли GD такую конструкцию.
Ответ отправил: Powoditch konstantin (статус: 7-ой класс)
Ответ отправлен: 26.10.2007, 19:26


Вопрос № 106.921
Уважаемые эксперты, подскажите, почему не показываются ошибки, связаные с класами в PHP5?

Приложение:

Отправлен: 26.10.2007, 19:28
Вопрос задал: Миленин Александр (статус: 7-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Бородин Александр Олегович
Здравствуйте, Azrr!
Вероятно, это не статическая функция класса sql, а функция объекта класса sql. Поэтому таким образом - sql::connect() - ее вызывать нельзя. Но соль вся в том, что если Вы вызовете ее таким образом, то ошибка либо не выскочит вовсе, либо выскочит при каких-то определенных настройках директивы error_reporting(). Смысл ответа моего вкратце таков: нельзя вызывать функции объектов как статические функции и наоборот. Вероятно, у Вас могут быть проблемы с восприятием понятия static(у меня такое было, поэтому и спрашиваю). Извините, если я неправ.
---------
Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: Студент)
Ответ отправлен: 26.10.2007, 19:55
Оценка за ответ: 4
Комментарий оценки:
Спасибо за ответ, но вопрос не в том, где ошибка, это я и сам знаю, вопрос в том, почему эта ошибка никак не отображается и как это можно исправить. У меня весь проект в класах, и любая ошибка внутри класа не отображается.


Вопрос № 107.012
Доброго времени суток, уважаемые эксперты.
Вопрос в следующем:
- вебсервер Аппач;
- авторизация .htaccess;
- вход по умолчанию на index.php.
В какой переменной будет находится логин вошедшего на сайт?
Необходимо перенаправлять (автоматически) каждого посетителя на свою страничку. Мое решение такое:
<?php
$url="/~$_USERLOGIN;
echo '<meta http-equiv="refresh" content="0;URL='.$url.'">';
?>
($url - это я для наглядности, можно и без него)
где $_USERLOGIN - та самая гипотетическая переменная, которая как м не думается должна существовать и где находится логин вошедшего, одновременно это имя персональной директории вошедшего.
Предполагается для каждого посетителя своя папка (посетители все заранее известны, нежданные не приветствуются :-) )
Если кроме ответа на вопрос, появится желание прокоментировать мое решение, буду признателен. (начинающий пшп-ник :-) .
Спасибо.
Отправлен: 27.10.2007, 18:56
Вопрос задал: Grist (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Миленин Александр
Здравствуйте, Grist!
Логин вошедшего на сайт будет содержаться в $PHP_AUTH_USER.

Приложение:

Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 27.10.2007, 19:05
Оценка за ответ: 5
Комментарий оценки:
БОльшое спасибо. :-)


Вопрос № 107.096
Здраствуйте

у меня задача.
Я защищаю файл от загрузок по средствам формы, т.е. заполнив форму если все верно читаю файл и вывожу на печать предварительно сформировав заголовки:
if( !is_error() ){

/*
* @ load file
*/
header( "Content-Type: ".$row[file_MimeType] );
header( "Content-Length: ". $row[file_Size] );
header( "Pragma: no-cashe" );
header( "Expires: 0" );
header( "Content-Disposition: ; filename=" . $row[file_Name] );

$h = fopen( $file , "rb" );
echo( fread( $h, $row[file_Size] ));
fclose( $h );
exit();
}

Но здесь небольшая проблема если файл большой то такое не возможно.
Времени не хватит на 30сек.
Как мне реализовать по другому защиту от скачивания файлов.
Отправлен: 28.10.2007, 12:40
Вопрос задал: Оськин Дмитрий Владимирович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Евгений Неверов
Здравствуйте, Дмитрий Владимирович!

Следует сделать примерно так:
set_time_limit(0);
$h = fopen( $file , "rb" );
while(!feof($h)) {
echo fread($h, 4096);
flush();
}
fclose($h); exit;

Таким образом, мы выводим файл не целиком, а по кусочкам (по 4 Кб), тем самым решаем проблемы со временем закачки и переполнением памяти.
Ответ отправил: Евгений Неверов (статус: Студент)
Ответ отправлен: 28.10.2007, 12:48
Оценка за ответ: 3
Комментарий оценки:
set_time_limit как я знаю большинство хостеров не позволяют
на моем стоит вообще 20 сек.

Отвечает: Миленин Александр
Здравствуйте, Оськин Дмитрий Владимирович!
"Как мне реализовать по другому защиту от скачивания файлов" - Вобщето вы не показали, как защищаете файл, если не считать if( !is_error()).

"Времени не хватит на 30сек." - Установите set_time_limit(0);
Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 28.10.2007, 12:56

Отвечает: Бородин Александр Олегович
Здравствуйте, Оськин Дмитрий Владимирович!
А почему бы не попробовать решить задачку средствами .htaccess? Вам нужна защита от скачивания, ну и переадресуйте прямые запросы к файлам, которые Вы хотите защитить, на какой-нибудь скрипт. Самый простой пример:

RewriteEngine On
RewriteRule /path/to/files/.* warning.php

Нужна поддержка mod_rewrite. При таком раскладе файл нельзя будет скачать, притом, на мой взгляд, делается это "малой кровью". Поскольку пример простой, его надо еще адаптировать под конкретную задачу, потому что в данной реализации он не позволяет запросы ни к каким файлам в каталоге /path/to/files/.
---------
Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: Студент)
Ответ отправлен: 28.10.2007, 22:08
Оценка за ответ: 4
Комментарий оценки:
сообразил.
Все таки приходится все самому догонять;)

Все просто, если доступ разрешен на закачку файла, просто создаем в папке скажем fales копию файла например
copy("secretdir/file.rar","files/".md5(rand()).".rar")
и редиректом на него
header('location '.$file);

и файлы старее скажем нескольких часов удаляем из папки, связи на них теряются.


Вопрос № 107.185
Доброе время суток!!!
Вопрос следующий:
Есть сайт на хостинге jino-net.ru
По ftp залит движок mamba-cms.
Нужно задать аттрибуты на заданный каталог и все файли и подкаталоги, находящиеся в нем (например, что-то наподобие CHMOD 777).
Дело в том, что файловые менеджеры, такие как far, Total Commander ставят аттрибуты только на каталог, а ставить их вручную на все дерево - очень долго.
Подскажите, пожалуйста, как будет выглядеть скрипт, которым можно это сделать, или пришлите ссылку на готовый скрипт.
Заранее благодарен.
С уважением.
Павел Форсман.
Отправлен: 28.10.2007, 23:53
Вопрос задал: Форсман Павел Вячеславович (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Миленин Александр
Здравствуйте, Форсман Павел Вячеславович!
В приложении приведён пример скрипта, рекурмивно изменяющего права.

Приложение:

Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 29.10.2007, 00:07
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо!!! Скрипт отличный, буду пользоваться!!!

Отвечает: M@gi$†e®
Здравствуйте, Форсман Павел Вячеславович!
Про far не скажу, а в Total Commander в диалоге редактирования атрибутов есть опция "Обрабатывать содержимое подкаталогов"...
---------
Aquila non Capta Muscas
Ответ отправил: M@gi$†e® (статус: 6-ой класс)
Ответ отправлен: 29.10.2007, 18:06


Вопрос № 107.190
список файлов вида ..data/$yaer-$month-$day.txt => $mass;
то есть файлы в /data/ 07-09-12.txt......06-08-13.txt
надо поместить в массив и вывести в календарь.
что бы при клике на дату генерировалась ссылка вида http://...../index.php?data=06-08-13
ну это я сам наверно смогу, главное файлы в календарь поместить.. :-
реально?
для бОльшего понятия я хочу вывести историю переписки из аси на страницу.
два дня разбирался с автозаменой, = разобрался, вот таким способом:

Приложение:

Отправлен: 29.10.2007, 02:19
Вопрос задал: Kelvin phitrow (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Миленин Александр
Здравствуйте, Kelvin phitrow!
В приложении набросок класса, пока сами сообщения не обрабатываются, а просто выводятся, чуть позе скинуть готовый класс.

Приложение:

Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 29.10.2007, 04:31
Оценка за ответ: 5
Комментарий оценки:
5 потому что все идеально! мысли читаешь!


Вопрос № 107.205
Здравствуйте уважаемые эксперты! Помогите мне разобраться, что я делаю не так ...
Мне нужно чтобы происходила проверка корректности переменной функцией preg_match

Приложение:

Отправлен: 29.10.2007, 08:58
Вопрос задал: DismalGhost (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Миленин Александр
Здравствуйте, DismalGhost!
Для чисел нужно использовать модификатор d, это означает любое число от 0 до 9, следующие за ним скобки({1,10} - от 1 до 10 символов) определяют колличество символов, по умолчанию 1.

Настоятельно рекомендую указывать ограничители ^ - начало, $ - конец (только после или перед разделителем "/" - в данном случае), т.к. без них будет учитываться любое совпадение, например без ограничителей abc123 пройдёт тест, т.к. содержит цифры.

Рекомендую почитать :
http://phpclub.ru/detail/article/regexp_1
http://phpclub.ru/detail/article/regexp_2

Приложение:

Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 29.10.2007, 09:14
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за развернутый ответ

Отвечает: Miklucho
Здравствуйте, DismalGhost!
Вот верный код (в приложении)

^ - не должно быть ничего в начале
$ - не должно быть ничего в конце
[0-9] - только цифра
+ - может повторятся 1 и более раз

Приложение:

Ответ отправил: Miklucho (статус: Студент)
Ответ отправлен: 29.10.2007, 09:51
Оценка за ответ: 5
Комментарий оценки:
Спасибо, теперь стало понятно где я ошибся


Вопрос № 107.328
Здравствуйте уважаемые!
Читаю из файла данные построчно и мне нужно, чтобы каждая строка была преобразована в массив. Данные в строке разделены пробелами, но сложность в том, что количество пробелов между данными нефиксировано.
Использовал такую функцию:

$массив = preg_split('/ /', $строка, -1, PREG_SPLIT_NO_EMPTY);

в большинстве случаев это работает, но увы, в некоторых случаях я получаю пустую ячейку массива, хотя там должны быть данные.
Подскажите, что еще можно использовать, чтобы данные были в ячейках массива невзирая на разное количество пробелов между ними?
Отправлен: 30.10.2007, 07:55
Вопрос задал: sir henry (статус: Академик)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Евгений Неверов
Здравствуйте, sir henry!

Используйте конструкцию:
$массив = explode(' ', $строка);
$массив = array_filter($массив, create_function('$s', 'return $s != "";')));

Возможно, есть решения проще, это первое, что пришло в голову.
Ответ отправил: Евгений Неверов (статус: Студент)
Ответ отправлен: 30.10.2007, 08:03
Оценка за ответ: 5
Комментарий оценки:
Спасибо, сейчас попробую...

Отвечает: Miklucho
Здравствуйте, sir henry!
Как вариант, сначала в строке заменяйте через preg_replace подряд идущие пробелы на один пробел:

preg_replace("/[s]+/"," ",$stroka);

А уже после разбивайте ее функцией explode:

$arrStr=explode(" ",$stroka);
Ответ отправил: Miklucho (статус: Студент)
Ответ отправлен: 30.10.2007, 08:11

Отвечает: HookEst
Здравствуйте, sir henry!
Помещаю:))

$result=preg_split('/s+/',$string,-1,PREG_SPLIT_NO_EMPTY);

/s+/ - pattern для 1 и более пробелов, а флаг PREG_SPLIT_NO_EMPTY указывает на то, что пустые элементы в результат включатся не будут, тогда trim() - не нужен.
Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 31.10.2007, 08:37
Оценка за ответ: 5
Комментарий оценки:
Отлично! Заработало даже без полпинка. :)


Вопрос № 107.331
Здравствуйте.
Сайт у меня состоит из многих папок. Необходимо обеспечить вставку кода header и footer. Но чтобы путь был с http:. То есть, чтобы разместив в одном месте необходимый код, в любой из директорий этот код вызывался бы одинаковой командой. Только начал изучать php, надеюсь на Вашу помощь.
Отправлен: 30.10.2007, 08:28
Вопрос задал: Александр Данилюк (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Бородин Александр Олегович
Здравствуйте, Александр Данилюк!
Совсем одинаковой команды, может быть, не получится. Хотя, с другой стороны, можно было бы написать функцию, которая определяет местоположение файла, вызывающего ее, и относительно этого файла строит путь к header и footer.

Попробую привести пример такой функции(просьба не бить, если не сработает, я не мог код протестировать):

Приложение:

---------
Ничто не сближает людей так, как совместное преступление.

Ответ отправил: Бородин Александр Олегович (статус: Студент)
Ответ отправлен: 30.10.2007, 10:20
Оценка за ответ: 4
Комментарий оценки:
Мне бы что-то попроще

Отвечает: Евгений Неверов
Здравствуйте, Александр!

Во-первых можно использовать переменную $_SERVER['DOCUMENT_ROOT'], которая всегда указывает на корень сайта.

То есть если у нас header.php и footer.php лежат по адресу /home/.../www/includes/, то к ним всегда (из любого скрипта на сайте) можно подключиться вот так:
include $_SERVER['DOCUMENT_ROOT'] . '/includes/header.php';
include $_SERVER['DOCUMENT_ROOT'] . '/includes/footer.php';

Но я бы предложил другой вариант: если хостер разрешает, то установите собственные значения для PHP-опций auto_prepend_file (PHP-файл с header-ом) и auto_append_file (PHP-файл с footer-ом).
Ответ отправил: Евгений Неверов (статус: Студент)
Ответ отправлен: 30.10.2007, 14:56
Оценка за ответ: 5
Комментарий оценки:
Спасибо, буду пробовать, надеюсь сработает

Отвечает: Маров Николай Станиславович
Здравствуйте, Александр Данилюк!
include(dirname(__FILE__)."/includes/header.php");
include(dirname(__FILE__)."/includes/footer.php");
Так как $_SERVER['DOCUMENT_ROOT'] не всегда поддерживается. Но хотя вы врядли встретитесь с такой проблемой.
Ответ отправил: Маров Николай Станиславович (статус: 1-ый класс)
Ответ отправлен: 30.10.2007, 15:18
Оценка за ответ: 4
Комментарий оценки:
Не совсем понятно


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.61.1 от 16.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное