20250224
[Д] [StringExtension::Replace] Функция заменяет все вхождения строки поиска на строку замены в заданной строке (аналог mb_str_replace). [Д] [StringExtension::ReplaceAll] Функция заменяет все вхождения строк поиск на соответствующие строки замены в заданной строке.
This commit is contained in:
		| @@ -207,4 +207,63 @@ final class StringExtension | ||||
|         // Возвращаю обрезанный текст | ||||
|         return mb_substr($text, 0, $lengthWithoutEndDots) . $endDots; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Функция заменяет все вхождения строк поиск на соответствующие строки замены в заданной строке. | ||||
|      * | ||||
|      * @param array $searchReplace Массив с парами поиска и замены. Например, <code>['-' => '#', '$' => '%']</code> | ||||
|      *     заменит все дефисы на # и все доллары на %. | ||||
|      * @param string $subject Строка, в которой нужно выполнить замену. | ||||
|      * @param string $encoding (необязательный) Кодировка (по умолчанию, UTF-8). | ||||
|      * | ||||
|      * @return string Возвращает новую строку с выполненными заменами. | ||||
|      */ | ||||
|     public static function ReplaceAll (array $searchReplace, string $subject, string $encoding = 'UTF-8'): string | ||||
|     { | ||||
|         // Создаю результат | ||||
|         $result = $subject; | ||||
|  | ||||
|         // Для каждой пары поиска и замены | ||||
|         foreach ($searchReplace as $search => $replace) | ||||
|             // - заменяю все вхождения строки поиска на строку замены в заданной строке | ||||
|             $result = self::Replace($search, $replace, $result, $encoding); | ||||
|  | ||||
|         // Возвращаю результат | ||||
|         return $result; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Функция заменяет все вхождения строки поиска на строку замены в заданной строке (аналог mb_str_replace). | ||||
|      * | ||||
|      * @param string $search Строка, которую нужно найти и заменить. | ||||
|      * @param string $replace Строка, на которую нужно заменить найденную строку. | ||||
|      * @param string $subject Строка, в которой нужно выполнить замену. | ||||
|      * @param string $encoding (необязательный) Кодировка (по умолчанию, UTF-8). | ||||
|      * | ||||
|      * @return string Возвращает новую строку с выполненной заменой. | ||||
|      */ | ||||
|     public static function Replace (string $search, string $replace, string $subject, | ||||
|         string $encoding = 'UTF-8'): string | ||||
|     { | ||||
|         // Если кодировка не UTF-8 | ||||
|         if ($encoding != 'UTF-8') { | ||||
|             // - то перекодируем строку поиска, замены и исходную строку в UTF-8 | ||||
|             $search = mb_convert_encoding($search, 'UTF-8', $encoding); | ||||
|             // - и перекодируем строку замены в UTF-8 | ||||
|             $replace = mb_convert_encoding($replace, 'UTF-8', $encoding); | ||||
|             // - и перекодируем исходную строку в UTF-8 | ||||
|             $subject = mb_convert_encoding($subject, 'UTF-8', $encoding); | ||||
|         } | ||||
|  | ||||
|         // С помощью регулярного выражения заменяем все вхождения строки поиска на строку замены | ||||
|         $result = preg_replace('/' . preg_quote($search, '/') . '/u', $replace, $subject); | ||||
|  | ||||
|         // Если кодировка не UTF-8 | ||||
|         if ($encoding != 'UTF-8') | ||||
|             // - то перекодируем результат в исходную кодировку | ||||
|             $result = mb_convert_encoding($result, $encoding, 'UTF-8'); | ||||
|  | ||||
|         // Возвращаем результат | ||||
|         return $result; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user