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

Форум Регулярные Выражения

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

 

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

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

тема: Нужна помощь в замене строки
 
 автор: capitan-america   (01.11.2011 в 11:54)   письмо автору
 
 

Вообщем есть скажем у меня строка

$строка = 'Den , hello , (super), amazing , super-man';

И есть $массив = array('hello', 'super');

Мне надо заменить те слова из строки, которые есть в массиве, на префикс.слово.

То есть должно получиться $строка = 'Den , префикс.hello , (префикс.super), amazing , super-man';

Мы знаем, что слова могут разделяться только '.' ,' ' , ')' , '('

$строка = preg_replace(Что тут должно быть?, $массив, $строка);
P.S Возможна обработка в цикле

  Ответить  
 
 автор: cheops   (01.11.2011 в 12:55)   письмо автору
 
   для: capitan-america   (01.11.2011 в 11:54)
 

Можно начать отталкиваться от следующего скрипта
<?php
  $text 
'Den , hello , (super), amazing , super-man';
  
$array = array('hello''super');
  for(
$i 0$i count($array); $i++)
  {
    
$pattern "|([.,)(\s])(".preg_quote($array[$i]).")([.,)(\s])|is";
    
$text preg_replace($pattern"\\1префикс.\\2\\3"$text);
  }
  echo 
$text;
?>

PS Он не является универсальным, так как не корректно обрабатывает слова, расположенные в начале и конце строки - их придется обработать отдельно.

  Ответить  
 
 автор: capitan-america   (01.11.2011 в 14:14)   письмо автору
 
   для: cheops   (01.11.2011 в 12:55)
 

Ага, вроде работает. А насчет крайних слов я приделал по пробелу слева и справа, а затем тримом их убрал.

Спасибо)

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

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