PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

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

> Найдено сообщений: 2
DukeNukem Отправлено: 02 Октября, 2015 - 22:34:21 • Тема: Заменить первое вхождение и остановить выполнение • Форум: Регулярные выражения

Ответов: 2
Просмотров: 118
andrewkard пишет:
DukeNukem
Цитата:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

str_replace

При этом решении произойдет каждая замена 1 раз. Мне же нужно чтобы после первой замены остальные не выполнялись
Как вариант проверять на $count==1 и goto в конец, но как то костыльно...
(Добавление)
Принято решение писать функцию что то типа
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function str_replace_once($search, $replacedo, $replacepos, $text)
  4. {
  5.    preg_match ('#(слово.)#is',$text,$needword);
  6.    $needword=$needword[1];
  7.    $replaceword=$replacedo.$needword . $replacepos
  8.    $str = str_replace("$needword", "$replaceword", $text, $count);
  9. }
  10.        
DukeNukem Отправлено: 02 Октября, 2015 - 16:00:17 • Тема: Заменить первое вхождение и остановить выполнение • Форум: Регулярные выражения

Ответов: 2
Просмотров: 118
Всем привет. Есть несколько текстов:
Цитата:
слово1 слово2 слово4 слово6 слово7 слово9 слово10

Цитата:
слово1 слово2 слово3 слово5 слово6 слово22 слово30

Нужно заменить:
1) "слово1" на "другоеслово"
2) "слово2" на "ещеоднослово"
3) если "слово2" было заменено то замена прекращается.

Вот с третьим пунктом загвоздка. Код что накрапал:

PHP:
скопировать код в буфер обмена
  1.  
  2. function str_replace_once($search, $replace, $text)
  3. {
  4.    $pos = strpos($text, $search);
  5.    return $pos!==false ? substr_replace($text, $replace, $pos, strlen($search)) : $text;
  6. }
  7.            $replacecont = str_replace_once('слово1','<a href="/">слово1</a>',$replacecont);
  8.            $replacecont = str_replace_once('слово2 ','<a href=/>слово2</a> ',$replacecont);
  9.            $replacecont = str_replace_once('слово3 ','<a href=/>слово3</a> ',$replacecont);
  10.  


Вот если первая замена произошла, как остановить остальные?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB