Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения, найти и первую вопросительную 
V
    Опции темы
maxnsk82
Дата 17.6.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.6.2009

Репутация: нет
Всего: нет



У меня задачка: У имеющегося текстового файла удалить первую строку, в конце которой стоит во-просительный знак. Результат записать в другой файл.

Я вначале читаю из 1-го файла строки и заношу в массив $file, а потом перезаписаваю в 1й и 2й, так вот у меня все строки вновь в 1-м оказываются, а условие при котором нужно перенести первую вопросительную строку:
Код

while($file[$i]!="")
{
    if(!$flag&&preg_match("/\?\b/",$file[$i]))
    {
        fwrite($f2,$file[$i]);
        $flag++;
    }
    else 
    {
        fwrite($f1,$file[$i]);
    }
    $i++;
}


Видимо как-то не правильно шаблон написан? Пробовал ereg() использовать, но там тоже не получается(

PM MAIL   Вверх
s0lman
Дата 17.6.2010, 12:10 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



А зачем использовать регулярку для решения данной задачи? Не проще ли проверку сделать типа 
Код

if($file[$i][strlen($file[$i])-1] =='?') { ...}

?

Добавлено через 1 минуту и 2 секунды
Да, ereg-функции лучше и не пробуйте использовать)


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
maxnsk82
Дата 17.6.2010, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.6.2009

Репутация: нет
Всего: нет



Сойдёт как вариант, хотя тема "регулярные выражения", и лучше используя их, может даже у меня и правильно написано, т.к. и с этим вариантом работать не хочет(, не понимаю почему? приведу весь код на всякий случай:

Код

<?
if(!file_exists("text.txt"))echo 'Не существует файла "text.txt"';
else
{
$f=fopen("text.txt","r");
echo "Содержимое файла:<br>";
readfile("text.txt");
fclose($f);
echo "<br>Необходимо вынести первую строку с ? в вонце в другой файл. Результат: ";
$file=file("text.txt");
$f1=fopen("text.txt","w+");
$f2=fopen("text2.txt","w+");
$flag=0; $i=0;
while($file[$i]!="")
{
    if(!$flag&&$file[$i][strlen($file[$i])-1]=='?')
    {
        fwrite($f2,$file[$i]);
        $flag++;
    }
    else 
    {
        fwrite($f1,$file[$i]);
    }
    $i++;
}
echo "<br>Содержимое файла text.txt: ";
readfile("text.txt");
echo "<br>Содержимое файла text2.txt: ";
readfile("text2.txt");
fclose($f1);
fclose($f2);
}
?>

PM MAIL   Вверх
patap
Дата 17.6.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



вот тебе регулярка
Код
\?$




зачем переменная $flag? шоб была? smile

Это сообщение отредактировал(а) patap - 17.6.2010, 12:33


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
s0lman
Дата 17.6.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(maxnsk82 @  17.6.2010,  12:19 Найти цитируемый пост)
регулярные выражения

Я вижу

Цитата(maxnsk82 @  17.6.2010,  12:19 Найти цитируемый пост)
лучше используя их

Чем это лучше?

Регулярки тестирую здесь


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
maxnsk82
Дата 17.6.2010, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.6.2009

Репутация: нет
Всего: нет



лучше тем что так требуется преподавателем. а "\?$" в ereg() и "/\?$/" в preg_match ничего не находят, хотя вроде как в preg_match вместо $ используется \b..но и так не находит такую строку...спасибо за ссылку, пытаюсь там как-то сообразить что писать надо в pattern

Добавлено через 6 минут и 56 секунд
а flag - это что б только первую вопросительную строку перенести, остальные не надо....вроде нужен?
PM MAIL   Вверх
patap
Дата 17.6.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



Код

  $flag = true;
  foreach ($file as $str) {
    if($flag && preg_match('#\?\s?$#', $str)) {
      fwrite($f2, $str);
      $flag = false;
    } else {
      fwrite($f1,$str);
    }
  }



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

Это сообщение отредактировал(а) patap - 17.6.2010, 12:59


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
maxnsk82
Дата 17.6.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 27.6.2009

Репутация: нет
Всего: нет



Во! Это рабочее) Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.