Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2010, 16:44   #1
Delphinchik
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 60
По умолчанию Первая цыфра в строке...

Подскажите пожалуйста как быть:
Есть файл с кодом 1.php:

PHP код:
<?php
// ищем строку
$str="словоВ"
$fopen=@file("1.txt");
foreach(
$fopen as $key=>$value)
{
  
// $key узнает номер строки
  
if(substr_count($value,$str))
  {
    print 
$key+1// выводим номер строки
  
}
}
?>
И файл с текстом и строками 1.txt:

1 словоА блалала блалалаблалала блалала
2 словоБ блалала блалалаблалала блалалаблалала
3 словоВ блалала блалала
4 словоГ блалала блалала
5 словоД блалала блалалаблалала блалала


Строку (ёё номер) получить удаётся, но как теперь найти ПЕРВЫЙ символ в этой строке (первая цыфра перед словом в строках)?
З,Ы Первый символ может быть не только простой цыфрой но и в виде трех/двух значных цыфр (1,2,10,20,100 и тп).

Если есть номер строки то наверно сделать это будет не трудно, но я не понимаю КАК.


Последний раз редактировалось Delphinchik; 02.10.2010 в 16:48.
Delphinchik вне форума Ответить с цитированием
Старый 02.10.2010, 17:24   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Можно так:
PHP код:
// ....
  
if(substr_count($value,$str)) 
  { 
    print 
$key+1// выводим номер строки (порядковый)
    
$explode_value explode(' '$value); // если номер в строке отделен пробелом
    
$num_row $explode_value[0]; // указанный номер в строке
  
}
// .... 
Или так:
PHP код:
// ....
  
if(substr_count($value,$str)) 
  { 
    print 
$key+1// выводим номер строки (порядковый)
    
$pos strpos($value' '); // если номер в строке отделен пробелом
    
$num_row substr($value0$pos); // указанный номер в строке
  
}
// .... 
Andkorol вне форума Ответить с цитированием
Старый 02.10.2010, 18:08   #3
Delphinchik
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 60
По умолчанию

Ok, с этим вроде бы разобрался:

PHP код:
<?php
$slovo
="словоВ"
$fopen=@file("1.txt");
foreach(
$fopen as $key=>$value)
{
if(
strpos($value,$slovo) !== false)
{
print 
substr($value,0,1); 
}
}
?>
Он выводит первый символ в нужной строке в которой нужное слово
Но бывает что первый символ не один, а как я уже выше написал целове число, например если первый символ 321, то этот код вывидет только цыфру 3, как можно поправить это дело?
Delphinchik вне форума Ответить с цитированием
Старый 02.10.2010, 18:21   #4
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Код:
<?php
  $slovo="словоВ"; 
  $fopen=@file("1.txt");
  foreach($fopen as $key=>$value)
  {
    if(strpos($value,$slovo) !== false)
    {
      $value = eregi_replace("^([0-9]+)[[:space:]]+","\\1 ",$value);
      $value = explode(" ", $value);
      print $value[0]; // в массиве и другие части строки, по словам!
    }
  }
?>

Последний раз редактировалось Никки; 02.10.2010 в 18:24.
Никки вне форума Ответить с цитированием
Старый 02.10.2010, 18:23   #5
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Либо

Код:
<?php
  $slovo="словоВ"; 
  $fopen=@file("1.txt");
  foreach($fopen as $key=>$value)
  {
    if(strpos($value,$slovo) !== false)
    {
      print substr($value,0,strpos($value," "));
    }
  }
?>
Никки вне форума Ответить с цитированием
Старый 02.10.2010, 18:25   #6
Delphinchik
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 60
По умолчанию

Ха, зачётно. Спасибо !
Delphinchik вне форума Ответить с цитированием
Старый 05.10.2010, 13:09   #7
Delphinchik
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 60
По умолчанию

Этот код подошел отлично:

Код:
<?php
  $slovo="словоВ"; 
  $fopen=@file("1.txt");
  foreach($fopen as $key=>$value)
  {
    if(strpos($value,$slovo) !== false)
    {
      $value = eregi_replace("^([0-9]+)[[:space:]]+","\\1 ",$value);
      $value = explode(" ", $value);
      print $value[0]; // в массиве и другие части строки, по словам!
    }
  }
?>
А реально ли сделать тоже самое только не выводить первые символы этой строки, а просто удалить строку в которой это слово, если можно на примере)?
Delphinchik вне форума Ответить с цитированием
Старый 05.10.2010, 16:53   #8
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Запросто!

Код:
<?php
  $slovo="словоД"; 
  $fopen=@file("1.txt");
  $fp = fopen("1.txt","w");
  foreach($fopen as $value) 
    if(!strpos($value,$slovo)) 
      fwrite($fp, $value);
  fclose($fp);
?>
Вы уже много знаете, разбирайтесь!
Никки вне форума Ответить с цитированием
Старый 05.10.2010, 21:03   #9
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Строку
Код:
$value = eregi_replace("^([0-9]+)[[:space:]]+","\\1 ",$value);
поменяйте на

Код:
$value = eregi_replace("[[:space:]]+"," ",$value);
Никки вне форума Ответить с цитированием
Старый 05.10.2010, 23:58   #10
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

омг омг омг....
http://www.php.net/manual/en/function.eregi-replace.php
Цитата:

Warning

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
омг омг омг.. Мы только что научили новичка как пользоваться устаревшей функцией. Это ж так круто. Давайте ещё вместо jpg картинки в bmp хранить. Это ж так круто.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Первая программа... ViJey Помощь студентам 6 27.09.2010 20:49
Windows 7. Первая кровь Баламут Windows 15 03.10.2009 14:30
Моя первая программа igroman Софт 27 12.03.2009 20:23
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45
первая тема execom Софт 1 29.10.2006 01:15