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 » PHP » Напишите за меня, пожалуйста » Замена слова

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

1. splish - 03 Февраля, 2011 - 20:18:13 - перейти к сообщению
Добрый день.
в переменной $text содержится какой то текст

Пример текста:
А я иду шагаю по Москве Радость

Как сделать обработку текста что бы на выходе получить:
А я иду шагаю по Питеру Радость

Прошу показать пример обработки текста.
2. annihilus - 03 Февраля, 2011 - 20:25:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo str_replace("Москве","Питеру","А я иду шагаю по Москве");
3. Dekker8 - 03 Февраля, 2011 - 20:31:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $mes = "Я шагаю по Москве";
  3. echo str_replace("Москве","Питеру",$mes);
  4.  


не успел первым Улыбка)))))
4. splish - 03 Февраля, 2011 - 20:32:55 - перейти к сообщению
спасибо Радость
(Добавление)
Но почему не работает.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. //connect code
  3. $res = mysql_query("SELECT text FROM data") ;
  4. $query = mysql_fetch_array($res) ;
  5. while ($query = mysql_fetch_array($res)) {
  6.  
  7. $from = 'Москва';
  8. $to = 'Питер';
  9.                
  10.                 $text = str_replace($from, $to, $query);
  11.                
  12.                 echo "<pre>" ;
  13.                 print_r($text) ;
  14.                 echo "</pre>" ;
  15.         }
  16. ?>
5. annihilus - 03 Февраля, 2011 - 20:57:44 - перейти к сообщению
наверно потому что в $query не встречается слово "Москва".

И первая строка из таблицы в вашем коде не проходит вообще замену.
(Добавление)
И еще mysql_fetch_array возвращает массив , а не переменную.
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //connect code
  3. $res = mysql_query("SELECT text FROM data") ;
  4. while ($query = mysql_fetch_array($res)) {
  5.  
  6. $from = 'Москва';
  7. $to = 'Питер';
  8.                
  9.                 $text = str_replace($from, $to, $query['text']);
  10.                
  11.                 echo "<pre>" ;
  12.                 print_r($text) ;
  13.                 echo "</pre>" ;
  14.         }
  15. ?>
6. Dekker8 - 03 Февраля, 2011 - 21:06:10 - перейти к сообщению
попробкй заменить слово в какойто части массива.....
7. splish - 03 Февраля, 2011 - 21:06:23 - перейти к сообщению
В базе всего 1 строка.
После обработки функцией str_replace, текст не меняется Огорчение
Можно сделать подобное с массивом?
8. Dekker8 - 03 Февраля, 2011 - 21:08:46 - перейти к сообщению
дай содержимое той строки в которой хочешь поменять текст....
9. annihilus - 03 Февраля, 2011 - 21:11:04 - перейти к сообщению
splish пишет:
В базе всего 1 строка.

Тогда не удивительно что у вас ничего не заменяется..
В вашем примере , цикл вообще не запускается.
10. splish - 03 Февраля, 2011 - 21:14:22 - перейти к сообщению
В базе data в поле text содержится текст:
А я иду шагаю по Москве

Выводиться строка на экран:
А я иду шагаю по Москве

Вот как изменить текст до вывода


annihilus, пробывал без цикла, тоже не получается.
11. Dekker8 - 03 Февраля, 2011 - 21:17:14 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $from = 'Москва';
  2. $to = 'Питер';


там точно должны слова совпадать, вместо Москва в переменной $from поствать: Москве
(Добавление)
кстати ето решение уже было ранее вам предложено так что я немного повторился Улыбка))
12. splish - 03 Февраля, 2011 - 21:22:04 - перейти к сообщению
Совпадать совпадают, НО не заменяются.
Чуть выше я в ручную писал и ошибся, в коде всё правильно написано было:

Москве
Питере
13. Dekker8 - 03 Февраля, 2011 - 23:53:45 - перейти к сообщению
проверь какое значение возвращает функция str_replace() true или false
14. splish - 04 Февраля, 2011 - 00:12:45 - перейти к сообщению

Всем спасибо,annihilus отдельное спасибо, извиняюсь за невнимательность, код написаный annihilus работает.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2. //connect code
  3. $res = mysql_query("SELECT text FROM data") ;
  4. while ($query = mysql_fetch_array($res)) {
  5.  
  6. $from = 'Москва';
  7. $to = 'Питер';
  8.                
  9.                $text = str_replace($from, $to, $query['text']);
  10.                
  11.                echo "<pre>" ;
  12.                print_r($text) ;
  13.                echo "</pre>" ;
  14.        }
  15. ?>

 

Powered by ExBB FM 1.0 RC1