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 » Программирование на PHP » Поиск подстроки и её замена

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

1. Itan - 12 Января, 2011 - 17:01:10 - перейти к сообщению
Здравствуйте! Подскажите, пожалуйста, как мне реализовать следующее:

Есть строка "3,4,5,//"
Сначала нужно проверить, есть ли в этой строке подстрока "1". Если есть, то заменить её на подстроку "Слово1".
Если есть подстрока "2", то заменить её на "Слово2"
И так до подстроки "6" и "Слова6" соответственно.

Я пробовал делать с помощью str_replace:
PHP:
скопировать код в буфер обмена
  1.  
  2. $row[1]="3,4,5,"
  3.  
  4. $x.=str_replace("1", "Слово1", $row[1]);
  5. $x.=str_replace("2", "Слово2", $row[1]);
  6. $x.=str_replace("3", "Слово3", $row[1]);
  7. $x.=str_replace("4", "Слово4", $row[1]);
  8. $x.=str_replace("5", "Слово5", $row[1]);
  9. $x.=str_replace("6", "Слово6", $row[1]);
  10. print $x;
  11.  


Я думал, что это выведет строку "Слово3,Слово4,Слово5,", но выводит это:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 3,4,5,//3,4,5,//Слово3,4,5,//3,Слово4,5,//3,4,Слово5,//3,4,5,//
  3.  


Я второй час не могу понять как это сделать, только дошло, что сначала нужно проверять наличие каждой подстроки, и если подстрока найдена, то только потом производить замену. Пробовал написать функцию, типа:
PHP:
скопировать код в буфер обмена
  1. function sstr ($what) {
  2. if (strpos($row[1], $what))
  3. {
  4.         return false;
  5. } else {
  6.         return true;
  7. }
  8.  
  9. if (sstr("1")) {
  10. $x.=str_replace("1", "Слово1", $row[1]);
  11. } //И т.д. до подстроки "6"
  12. print $x;
  13.  

Но почему-то сценарий вообще ничего не выводит...

Пробовал дописать так:
PHP:
скопировать код в буфер обмена
  1. if (sstr("1")) {
  2. $x.=str_replace("1", "Слово1", $row[1]);
  3. } else {
  4. print "BAD";
  5. }


Выводит BAD Недовольство, огорчение

Как бы сделать-то...
2. Мелкий - 12 Января, 2011 - 17:08:41 - перейти к сообщению
см примеры str_replace, ей на вход можно подать массивы, которые она за раз и обработает в соответствии: первый элемент массива будет заменяться на первый элемент второго массива.
3. Itan - 12 Января, 2011 - 17:26:27 - перейти к сообщению
Спасибо, заработало)
4. OrmaJever - 12 Января, 2011 - 18:21:48 - перейти к сообщению
не нужно использовать такой оператор .=
PHP:
скопировать код в буфер обмена
  1. $row[1]="3,4,5,"
  2.  
  3. $x=str_replace("1", "Слово1", $row[1]);
  4. $x=str_replace("2", "Слово2", $x);
  5. $x=str_replace("3", "Слово3", $x);
  6. $x=str_replace("4", "Слово4", $x);
  7. $x=str_replace("5", "Слово5", $x);
  8. $x=str_replace("6", "Слово6", $x);
  9. print $x;

ну и как сказал Мелкий можно передать масив значний.
5. Itan - 12 Января, 2011 - 18:26:25 - перейти к сообщению
понял)) спасибо

 

Powered by ExBB FM 1.0 RC1