Автор Тема: Два сложных вопроса!  (Прочитано 3718 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн denup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два сложных вопроса!
« : 27 Сентября 2002, 22:19:49 »
Привет.
Сначала первый вопрос:
Мне надо построчно прочитать информацию из файла, file.txt.
Его листинг:
a1:b1
a2:b2
a3:b3
и т.д.
Пресвоив значения строк переменным, я их проверяю и вывожу эти строки на экран! Делаю так:

<?
$fp fopen("file.txt","w"); 
// (параметр,"w" - это у меня так в скрипте стоит, могу и "a" поставить!)
for ($i 0$i count($fp); $i++) {
list (
$z1,$z2)=split("\\:",$fp[$i]);
// тут проверки всякие...
// далее...
echo "$z1 - $z2";
}
?>

Всё вроде хорошо, но вот беда, у меня выводятся строки:
a1:b1
a2:b2
a3:b3
А я хочу, чтобы было так:
a3:b3
a2:b2
a1:b1
Тоесть задом на перёд, так - как при записи в файл, новые строки записываются в конец файла!
А при выводе строк на экран, они так и выводятся!
Я просто хочу чтобы последние строки ( новые! ) выводились первыми!
И ещё если можно... Например я хочу чтобы на страницу выводилось энное количетсво строк!
Например количество выводимых строк я опишу в переменной $sec!
Пусть выводятся две строки $sec=2;
Дак вот! Как это приделать к этому циклу for??? См. выше!
Я пробовал делать так!

<?
$kol=count($fp);
for(
$i=$kol$i>=0$i--) {
list (
$z1,$z2)=split("\\:",$fp[$i]);
// тут проверки всякие...
// далее...
echo "$z1 - $z2";}
?>

Но что - то неполучается :( А может есть какие либо способы ПЕРЕВЁРНУТОЙ записи в файл???
Чтобы при чтении можно было не мучаться!

И второй вопрос!

<?
$email="t@t.com";
if(!
preg_match("/^([a-z,0-9])+\\@([a-z,0-9])+(\\.([a-z,0-9])+)+$/"$email))
{echo 
"Не верно";}
?>

У меня такой вопрос! Как встроить в выше указанную проверку, определения зоны домена!
Тоесть com, net или ru например!
И занести например его в переменную $i??? Зону я имею в виду :)

Заранее спасибо!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два сложных вопроса!
« Ответ #1 : 27 Сентября 2002, 22:26:09 »
1.
идея заменить
for ($i = 0; $i < count($fp); $i++)
на
for ($i=count($fp)-1,$i >= 0; $i--)
тебе не приходила в голову? ;-)

Оффлайн denup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 14
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Два сложных вопроса!
« Ответ #2 : 27 Сентября 2002, 22:27:59 »
А что это даст!? :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два сложных вопроса!
« Ответ #3 : 27 Сентября 2002, 22:39:14 »
а ты попробуй - и узнаешь, что даст :-))))

замечания по первому пункту.
$fp = fopen("file.txt","w");
это какой-то бред.
это не будет работать. ты перепутал с
$fp = file("file.txt");
дальше
вместо
list ($z1,$z2)=split(":",$fp[$i]);
надо писать
list ($z1,$z2)=explode(":",$fp[$i]);

То есть, первая часть скрипта будет выглядеть вот так
$fp 
file("file.txt");
for (
$i=count($fp)-1,$i >= 0$i--) {
  list (
$z1,$z2)=explode(":",$fp[$i]);
  echo 
"$z1 - $z2";
}


Упс! Как это я не заметил. fopen вместо file оставил :-(
« Последнее редактирование: 29 Сентября 2002, 22:48:44 от RomikChef »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два сложных вопроса!
« Ответ #4 : 27 Сентября 2002, 22:46:56 »
способов перевернутой записи в файл не существует.

странный вопрос по поводу перевернутого вывода.
ты арифметику в школе проходил?
вычитать умеешь?
если в уме не можешь - нарисуй примерный массив. Я всегда так делаю.
и высчитай по нему.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два сложных вопроса!
« Ответ #5 : 27 Сентября 2002, 22:55:22 »
по прводу проверки мейла - в твоем многого не хватает.
лучше посмотри в факе или по форуму готовый скрипт проверки.
а получить домен первого уровня в переменную очень просто.
у функции preg_match есть еще один параметр - массив найденных значений. Вот в нем ты и найдешь зону.

Оффлайн Дмитрий Попов

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 264
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.programmist.spb.ru
Два сложных вопроса!
« Ответ #6 : 27 Сентября 2002, 23:17:48 »
[OFF]
Цитировать
если в уме не можешь - нарисуй примерный массив. Я всегда так делаю.

Супер! :-) (это не подколка - просто звучит хорошо)
[/OFF]
 За Родину! За Россию!
SendMail для любого хостинга.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Два сложных вопроса!
« Ответ #7 : 28 Сентября 2002, 18:51:56 »
Цитировать
Я просто хочу чтобы последние строки ( новые! ) выводились первыми!

http://ww.php.net/array_reverse
Цитировать
Как встроить в выше указанную проверку, определения зоны домена!


preg_match
("/^[a-z_\\\\d]+@[a-z_\\\\d]+.([a-z\\\\d]{2,4})$/"$email$match);
$zone $match[1];
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Два сложных вопроса!
« Ответ #8 : 29 Сентября 2002, 03:04:06 »
GotZfild
Мне кажется нерациональными делать array_reverse
получается, ты перебираешь массив два раза - первый этой функцией, и второй - при выводе в цикле.

А в перловый прег неплохо бы добавить точку :-)
Да и цифр, вроде, в доменах пока нет :-)
Я бы написал по-старинке
^[a-z0-9._-]+@[a-z0-9._-]+\\.[a-z]{2,4}$

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Два сложных вопроса!
« Ответ #9 : 29 Сентября 2002, 11:01:01 »
Цитировать
получается, ты перебираешь массив два раза - первый этой функцией, и второй - при выводе в цикле.

мне кажется, для denup\'а это не имеет значение. Я сказал то, что будет проще для него.
Цитировать
А в перловый прег неплохо бы добавить точку

Это уже шалости форума :-)
Цитировать
Да и цифр, вроде, в доменах пока нет

А может это я на будущее предусмотрел? :-)
После трех дней без программирования жизнь становится бессмысленной.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28