Forum Webscript.Ru
Программирование => PHP => Тема начата: denup от 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??? Зону я имею в виду :)
Заранее спасибо!
-
1.
идея заменить
for ($i = 0; $i < count($fp); $i++)
на
for ($i=count($fp)-1,$i >= 0; $i--)
тебе не приходила в голову? ;-)
-
А что это даст!? :)
-
а ты попробуй - и узнаешь, что даст :-))))
замечания по первому пункту.
$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 оставил :-(
-
способов перевернутой записи в файл не существует.
странный вопрос по поводу перевернутого вывода.
ты арифметику в школе проходил?
вычитать умеешь?
если в уме не можешь - нарисуй примерный массив. Я всегда так делаю.
и высчитай по нему.
-
по прводу проверки мейла - в твоем многого не хватает.
лучше посмотри в факе или по форуму готовый скрипт проверки.
а получить домен первого уровня в переменную очень просто.
у функции preg_match есть еще один параметр - массив найденных значений. Вот в нем ты и найдешь зону.
-
[OFF]
если в уме не можешь - нарисуй примерный массив. Я всегда так делаю.
Супер! :-) (это не подколка - просто звучит хорошо)
[/OFF]
-
Я просто хочу чтобы последние строки ( новые! ) выводились первыми!
http://ww.php.net/array_reverseКак встроить в выше указанную проверку, определения зоны домена!
preg_match("/^[a-z_\\\\d]+@[a-z_\\\\d]+.([a-z\\\\d]{2,4})$/", $email, $match);
$zone = $match[1];
-
GotZfild
Мне кажется нерациональными делать array_reverse
получается, ты перебираешь массив два раза - первый этой функцией, и второй - при выводе в цикле.
А в перловый прег неплохо бы добавить точку :-)
Да и цифр, вроде, в доменах пока нет :-)
Я бы написал по-старинке
^[a-z0-9._-]+@[a-z0-9._-]+\\.[a-z]{2,4}$
-
получается, ты перебираешь массив два раза - первый этой функцией, и второй - при выводе в цикле.
мне кажется, для denup\'а это не имеет значение. Я сказал то, что будет проще для него.
А в перловый прег неплохо бы добавить точку
Это уже шалости форума :-)
Да и цифр, вроде, в доменах пока нет
А может это я на будущее предусмотрел? :-)