Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В какой строке слово
 
 автор: levis   (08.12.2006 в 21:15)   письмо автору
 
 

скрипт ищет в файле слово(сделал),а вот надо еще сделать так чтобы выводилась инфа о том в какой строке находится файл?
помогите плиз

   
 
 автор: Fli   (08.12.2006 в 21:32)   письмо автору
 
   для: levis   (08.12.2006 в 21:15)
 

Приведите пример!

   
 
 автор: levis   (08.12.2006 в 21:40)   письмо автору
 
   для: Fli   (08.12.2006 в 21:32)
 

Пример??
Чего?
В файле ищу так


$word= $reply_add;
$file="../mess/allmess.txt";

$open=fopen($file,"a+");


while(!feof($open)) $search.=fgets($open,1024);
fclose($open);

if(eregi(strtolower($word),strtolower($search)))
{

echo "Слово ".$word." - найдено";
echo (count ( $word,$open2));
}

...
{
...
}

   
 
 автор: moonfox   (09.12.2006 в 05:58)   письмо автору
 
   для: levis   (08.12.2006 в 21:40)
 


<?
$word
"da";
$file="test.txt";

$open=fopen($file,"r+");
while(!
feof($open))

$search.=fgets($open,1024); 
$search=preg_replace('|[\s]+|'," ",$search);
$search=preg_split("|[\s]+|"$search);

$narray_search($word,  $search);
echo 
$n+1;
fclose($open);

?>



встречный вопрос почему здесь после while(...) не используется {} ?
и что значит .=?
-----------------------------
соотвественно если поставить {} то в цикле получим не один массив из текста который в файле а каждое слово - массив с одним элементом...

   
 
 автор: kasmanaft   (09.12.2006 в 07:07)   письмо автору
 
   для: moonfox   (09.12.2006 в 05:58)
 

>> почему здесь после while(...) не используется {} ?
Без фигурных скобок под цикл попадает только следующий за ним оператор. Что тут и нужно
>> и что значит .= ?
Прилепить к строке $search, прочитанную из файла ... в результате в переменной будет находиться тескт из файла

2levis

А что по вашему строка? Нужно именно определить в какой строке в файле найдено слово или строку, в которой слово будет находиться на сайте?

   
 
 автор: Unkind   (09.12.2006 в 11:19)   письмо автору
 
   для: levis   (08.12.2006 в 21:40)
 

Можно так:


<?php
function print_result($result$i$c)
{
echo(
$result);
if(
$i != $c) echo(", ");    
}

$filename "file.txt";
$word "Слово";

$farray file($filename);
$lines count($farray);
$results = array();

foreach(
$farray as $key => $value)
{
    if(
strpos($value$word) !== false)
    {
    
$results[] = $key 1;
    }
}

unset(
$farray);

$c count($results);

if(
$c 0)
{
    if(
count($results) > 1)
    {
    echo(
"Слово '".$word."' найдено в строках ");
    for(
$i 0$i count($results); print_result($results[$i], $i 1$c), $i++);
    echo(
"<br />\n");
    }
    else
    {
    echo(
"Слово '".$word."' найдено в строке ".$results[0]."<br />\n");
    }
}
else
{
echo(
"Слово '".$word."' не найдено в файле '".$filename."'.<br />\n");
}
?>

   
 
 автор: levis   (09.12.2006 в 14:41)   письмо автору
 
   для: levis   (08.12.2006 в 21:15)
 

Спасибо вам!!!
И еще один вопросик :
почему когда я передаю данные ссесии передается только 1 слово -самое первое

session_start();
$reply_add=($_SESSION['msg']);

   
 
 автор: moonfox   (09.12.2006 в 15:04)   письмо автору
 
   для: levis   (09.12.2006 в 14:41)
 

msg - как оно формируется?

Unkind
хороший пример... отличный от моего..

тут правда в чем ерунда если 100 слов написать в одну строку - соотвественно перенос слов произойдет так как визуально вмещается в 1 строку тока определенное колво слов ... но этот переность не есть \n - и фактически пусть даже будет искомое слово на 100 - ой позиции- а это конец экрана - скрипт выдаст что искомое слово в строке 1... мой скрипт выдаст что искомой слово имеет 100 - ую позицию... тут наверно актуально искать и строку и позицию в ней..

   
 
 автор: Unkind   (09.12.2006 в 15:33)   письмо автору
 
   для: moonfox   (09.12.2006 в 15:04)
 

Что за ерунда? Если искомое слово на первой строке, он и выдаст то, что оно на первой., если на сотой, то и выдаст на сотой. Я, знаете, точность предпочитаю.

   
 
 автор: levis   (09.12.2006 в 15:46)   письмо автору
 
   для: Unkind   (09.12.2006 в 15:33)
 


<form action=admin/reply.php method=POST>
<table border='0' width=$size cellspacing='1' bordercolordark='white' bordercolorlight='white' bordercolor='white' cellpadding='0'>
    <tr>
        <td width='963' colspan='2' background=$image_top height='23'>&nbsp;&nbsp;&nbsp;
           <font color=$color_name_msg> <b>
           
            
           $mess[$t]</b><i><small>($mess[$b])</small></i></font>
        </td>
    </tr>
    
    <tr>
        <td width='20%' bordercolor='black' bgcolor=$color_name><font color=$color_info_msg>
        &#206;&#242; : $mess[$i] ";
             if (!empty($mess[$e])) print "<a href=mailto:$mess[$e]> &nbsp;<img src=$milo></a> ";
             if (!empty($mess[$s])) print " <a href=$mess[$s]>&nbsp;<img src =$ssilka ></a></font></td>";
          
        print "</td>
        <td width='835' bgcolor='$color_msg'valign='top' >
            <font color=$color_text_msg>&nbsp

          $mess[$g]</font>";
          $mess[$g]=str_replace(" ","_",$mess[$g]);
           print"
           <input type=radio name=msg  value=$mess[$g]>//это короче каждая 6 строка
        </td>
    </tr>
    <tr>
    <td>


Но с эти я уже справился как видно с помошью репласе


Мой 1 вопрос был задан собственно для того чтобы я смог найти строку,а потом уже ее заменить
но почему код на замену мой не пашет почему?


$line=$n;
$replace="$word <br><br> $reply";

$file2=file("../mess/allmess.txt");
$open2=fopen("../mess/allmess.txt","w");

   for($i=0;$i< count($file2);$i++)
   {
      if(($i+1)!=$line){fwrite($open2,$file2[$i]);}
      else{fwrite($open2,$replace."\r\n");}
   }

fclose($open2);

   
 
 автор: moonfox   (09.12.2006 в 16:13)   письмо автору
 
   для: Unkind   (09.12.2006 в 15:33)
 

попробуй сам...


<?
$word
="word";

$text="some text some text some text some 
text some text some text some text some 
text some text some text some text some 
text some text some text some text some 
text some text some text some some text 
some text some text some text some text 
word
"
;

это одна строка ... результат выдаст что 
искомое находится в 1 строке 
это правда 
но на экране мы увидим не одно строку а 
столько сколька позволяет уместить в себе 
строк даное разрешение
. - здесь на форуме 
оно формируется в одну строку дрим вивер 
тоже выдаст все в одну строку
не все 
редакторы так отображают например при 
включеном в блокноте переносе слов
ms 
word
) - в несколькоиз этого:
факт строка одна
и факт что визуально мы видим больше чем 
одну строку 
это и вызывает затруднее в 
восприятии где же это слово
?>

и савсем иное


<?
$text
="some text
some text 
some text 
some text 
some text 
some text 
some text 
word"
;

опять таки на экране мы увидим текст в 
разбитый на строки 
тут выдаст что искомое 
слово в строке 8.
?>


надеюся меня поняли
это не проблема это нюанс
мысли вслух.. можно не парится:)

   
 
 автор: Unkind   (09.12.2006 в 16:31)   письмо автору
 
   для: moonfox   (09.12.2006 в 16:13)
 

Как у Вас выглядит страница мне, честно говоря, без разницы. Сказано в какой строке - надо и искать в нужной строке, а не как кажется Вашему браузеру.

P.S. Ваш скрипт будет выдавать не на какой строке слово, а каким по счету оно будет. Может Вы не знаете, что такое "строка"?

   
 
 автор: moonfox   (09.12.2006 в 16:40)   письмо автору
 
   для: Unkind   (09.12.2006 в 16:31)
 

может ты будешь лучше читать что я пишу?
я не отказываюсь от того что оно показывает позицию в строке а не строку

   
 
 автор: Unkind   (09.12.2006 в 16:43)   письмо автору
 
   для: moonfox   (09.12.2006 в 16:40)
 

Мы на "ты" не переходили.

А может тогда Вы прочитаете, что хотел автор темы?

   
 
 автор: moonfox   (09.12.2006 в 16:47)   письмо автору
 
   для: Unkind   (09.12.2006 в 16:43)
 

я разширил понимание.
дал больше пищи для ума!
товарищь Unkind будем на ВЫ!

   
 
 автор: levis   (09.12.2006 в 17:12)   письмо автору
 
   для: moonfox   (09.12.2006 в 16:47)
 

Люди давайте жить дружно
Короче говоря, чтобы не было непонятностей
Помогите, пожалуйста сделать:
1)Надо найти строку в которой содержится слово(сделано)
2)Надо заменить эту строку на другую

А еще проще:
Скрипт для замены строк в файле.

   
 
 автор: moonfox   (09.12.2006 в 17:15)   письмо автору
 
   для: levis   (09.12.2006 в 17:12)
 

Вы наверно имеете ввиду замену не строки, а слова или словосочетание?
потому как мы могли убедиться что строкой может являтся хоть 100 разных слов содержащих и искомое... но заменяем именно искомое на не строку

   
 
 автор: Trianon   (09.12.2006 в 17:18)   письмо автору
 
   для: moonfox   (09.12.2006 в 17:15)
 

Это Вы опять "разширили понимание"?
А если человек всё-таки имел в виду именно то, что написал?

   
 
 автор: moonfox   (09.12.2006 в 17:31)   письмо автору
 
   для: Trianon   (09.12.2006 в 17:18)
 

сделано - то самое слово

текст текст текст текст текст текст текст текст текст текст текст сделано текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст

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

чичас товарищ levis все прояснит

   
 
 автор: levis   (09.12.2006 в 17:40)   письмо автору
 
   для: moonfox   (09.12.2006 в 17:31)
 

повторяющихся слов не ту так как слово которое мы ищем-это дата в формате час минута секунда!!

   
 
 автор: levis   (09.12.2006 в 18:05)   письмо автору
 
   для: levis   (09.12.2006 в 17:40)
 

Разьяснаю для чего это надо

Для добавления коментария к оствленному сообщению
тоесть скрипт ищет id сообщения(в моем случае дату,потом переходит на n строк) и заменяет его на текст сообщения и вставленный комментарий.Структура не пострадает

и вообще к чему разьснения? просто скажите как найти слово и заменить строку в котором это слово находится

   
 
 автор: levis   (09.12.2006 в 19:31)   письмо автору
 
   для: levis   (08.12.2006 в 21:15)
 

ну и че молчим?

   
 
 автор: levis   (09.12.2006 в 22:55)   письмо автору
 
   для: levis   (08.12.2006 в 21:15)
 

а как добавить запись в конец строки чтобы не повредить ее??

   
 
 автор: cheops   (10.12.2006 в 00:35)   письмо автору
 
   для: levis   (09.12.2006 в 22:55)
 

Для этого удобно воспользоваться оператором .=
<?php
  $test 
"Hello ";
  
$test .= "world!";
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования