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

Форум PHP

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

 

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

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

тема: Замена слова в тексте
 
 автор: Незнайка   (04.11.2008 в 14:07)   письмо автору
 
 

Здравствуйте все

Есть есть код:
<?php

$t 
'новый';
$t str_replace('новый','старый',$t);
$t str_replace('старый','новый',$t);
echo 
$t;

?>


Как правильно записать, чтобы то на что заменилось не заменялось (убрать $t = str_replace('старый','новый',$t); не предлогать )) ?

  Ответить  
 
 автор: ddhvvn   (04.11.2008 в 14:15)   письмо автору
 
   для: Незнайка   (04.11.2008 в 14:07)
 

Чего? %)

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 17:52)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 14:15)
 

to: ddhvvn
to: sim5


Ситуация такая:
В тексте может быть слово, "новый" или "старый" (условно). Заменить нужно: "новый" на "старый", а если в тексте "старый" на "новый", если замена прошла второй раз не заменять.

Сейчас у меня замена на замену лезет.
Как записать правильно?

  Ответить  
 
 автор: ddhvvn   (04.11.2008 в 17:59)   письмо автору
 
   для: Незнайка   (04.11.2008 в 17:52)
 

Ммм.. ну что-то то вроде этого

<?php
...
  if (
strpos("новый"$text) !== false)
     
$t str_replace('новый','старый',$t); 
  else
     
$t str_replace('старый','новый',$t); 
?>

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 18:17)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 17:59)
 

Спасибо, сейчас попробую...
P.S. Может еще про какой-нибудь писец напишу :)))

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 18:38)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 17:59)
 

Почти работает, но есть беда )
Например, текст: "новый день" или "новый член" или "старый чудак" ))
И усё перестает работать (
И еще, на регистр обращает вним., пробовал заменить: str_replace на str_ireplace, но толку нет.
Как быть?

  Ответить  
 
 автор: ddhvvn   (04.11.2008 в 19:01)   письмо автору
 
   для: Незнайка   (04.11.2008 в 18:38)
 

аргументы блин перепутал
<?php
$text 
'стАрый!';
$pos stripos($text'новый');
if (
$pos !== false)
echo 
str_ireplace('новый''старый'$text);
else
echo 
str_ireplace('старый''новый'$text);
?>

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 19:09)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 19:01)
 

ОК

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 20:30)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 19:01)
 

Спасибо, Спасибо, Спасибо

  Ответить  
 
 автор: sim5   (04.11.2008 в 19:11)   письмо автору
 
   для: Незнайка   (04.11.2008 в 18:38)
 

Тут только рег. выражениями, или если строковыми функциями, то нужно промежуточное действие:
<?
$s 
"новый день новый член старый чудак";
$s str_ireplace("старый""::"$s);
$s str_ireplace("новый""старый"$s);
$s str_ireplace("::""новый"$s);
print 
$s;

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 20:31)   письмо автору
 
   для: sim5   (04.11.2008 в 19:11)
 

Спасибо, Спасибо, Спасибо

  Ответить  
 
 автор: BinLaden   (04.11.2008 в 19:14)   письмо автору
 
   для: Незнайка   (04.11.2008 в 17:52)
 

<?php

$s 
'старый новый';
$s strtr($s, array('новый' => 'старый''старый' => 'новый'));

?>

  Ответить  
 
 автор: sim5   (04.11.2008 в 19:18)   письмо автору
 
   для: BinLaden   (04.11.2008 в 19:14)
 

Да, почаще надо матчасть смротреть, там полезное есть.)

PS. Но она регистро зависимая.

  Ответить  
 
 автор: Незнайка   (04.11.2008 в 20:31)   письмо автору
 
   для: BinLaden   (04.11.2008 в 19:14)
 

Спасибо, Спасибо, Спасибо

  Ответить  
Rambler's Top100
вверх

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