Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с файлом редактирования строки
Форумы портала PHP.SU » » Вопросы новичков » Помогите с файлом редактирования строки

Страниц (2): [1] 2 »
 

1. reslear - 25 Сентября, 2011 - 15:18:44 - перейти к сообщению
Привет!

есть:

PHP:
скопировать код в буфер обмена
  1. 1       Замужем
  2. 2       Замужема
  3. 3       Замужемп
  4. 4       Замужеме
  5.  


нужно проверить на существование цифры:
PHP:
скопировать код в буфер обмена
  1. foreach ($file_arr as $item  => $line){
  2.  trim($line);
  3.  list ($id, $data) = split("\t",$line,2);
  4.  if ($id == "4"){
  5.   print $data;
  6.  }
  7. }


ну и собственно нужно как то заменить $data
2. snikers987 - 25 Сентября, 2011 - 15:23:16 - перейти к сообщению
чет я совсем не понял что требуется..
3. reslear - 25 Сентября, 2011 - 15:32:15 - перейти к сообщению
snikers987, например что-б получилось :

4 Замужеме

вот так:

4 Тут другой текст
4. LIME - 25 Сентября, 2011 - 15:33:36 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $file_arr[$item]=implode("\t",$arr=($id,$newdata));

и лучше использовать explode() в таких случаях вместо split()
5. reslear - 25 Сентября, 2011 - 15:36:20 - перейти к сообщению
LIME, $newdata переменная нового текста?
6. snikers987 - 25 Сентября, 2011 - 15:37:24 - перейти к сообщению
от куда берется значение переменной $is?

а регулярными выражением что нельзя?
7. reslear - 25 Сентября, 2011 - 15:40:18 - перейти к сообщению
snikers987, $id и $data получаем :

$id = "3"
$data = "Замужемп"

то есть мы строку разбили "\t" на две переменные!
8. LIME - 25 Сентября, 2011 - 15:40:33 - перейти к сообщению
reslear да
9. reslear - 25 Сентября, 2011 - 15:41:51 - перейти к сообщению
выдаёт ошибку: unexpected ','
LIME, чё ты говорил про explode()? можешь прикинуть чё получится?
10. snikers987 - 25 Сентября, 2011 - 15:50:05 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $file_arr[$item]=explode("\t",$arr=($id,$newdata));


тут LIME наверно всетаки имел ввиду explode() , а не implode(), так как implode() никак не может вернуть массив.
11. LIME - 25 Сентября, 2011 - 16:02:10 - перейти к сообщению
snikers987 нет сказал именно что хотел но для первоначального кода топикстартера
reslear ну так отлаживайте
или хотябы дайте получившийся код
(Добавление)
PHP:
скопировать код в буфер обмена
  1. foreach ($file_arr as $item  => $line){
  2.  trim($line);
  3.  list ($id, $data) = explode("\t",$line,2);
  4.  if ($id == "4"){
  5.     $file_arr[$item]=implode("\t",$arr=array($id,$newdata));
  6.  }
  7. }
12. reslear - 25 Сентября, 2011 - 20:48:42 - перейти к сообщению
LIME, хоть убей но без изменений :

PHP:
скопировать код в буфер обмена
  1. $file = "data.dat";
  2. $file_arr = file($file);
  3.  
  4. foreach ($file_arr as $item  => $line){
  5.  trim($line);
  6.  list ($id, $data) = explode("\t",$line,2);
  7.  if ($id == "4"){
  8.     $file_arr[$item]=implode("\t",$arr=array($id,'gg'));
  9.  }
  10. }
13. LIME - 25 Сентября, 2011 - 21:24:38 - перейти к сообщению
reslear убью если окажется что надо было в файл писать
это работает
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file = "data.dat";
  3. $file_arr = file($file);
  4.  
  5. foreach ($file_arr as $item  => $line){
  6.  trim($line);
  7.  list ($id, $data) = explode("\t",$line,2);
  8.  if ($id == "4"){
  9.    $file_arr[$item]=implode("\t",$arr=array($id,'gg'));
  10.  }
  11. }
  12. var_dump($file_arr);
  13. ?>

проверьте у вас действительно таб разделяет в файле?
14. reslear - 25 Сентября, 2011 - 21:31:59 - перейти к сообщению
LIME, ))) да мне нужно в этом файле заменить.
15. LIME - 25 Сентября, 2011 - 21:43:00 - перейти к сообщению
есть ветка "напишите за меня"
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file = "data.dat";
  3. $file_arr = file($file);
  4.  
  5. foreach ($file_arr as $item  => $line){
  6.  trim($line);
  7.  list ($id, $data) = explode("\t",$line,2);
  8.  if ($id == "4"){
  9.    $file_arr[$item]=implode("\t",$arr=array($id,'gg'.PHP_EOL));
  10.  }
  11. }
  12. file_put_contents($file,$file_arr);
  13. var_dump($file_arr);
  14. ?>

 

Powered by ExBB FM 1.0 RC1