@@ -191,7 +191,7 @@ class="payment_btn__link"
191191 * @param $string
192192 * @return string
193193 */
194- public static function rus2translit ($ string ) {
194+ public static function rus2translit (string $ string ): string {
195195 $ converter = [
196196 'а ' => 'a ' , 'б ' => 'b ' , 'в ' => 'v ' ,
197197 'г ' => 'g ' , 'д ' => 'd ' , 'е ' => 'e ' ,
@@ -220,6 +220,43 @@ public static function rus2translit($string) {
220220 return strtr ($ string , $ converter );
221221 }
222222
223+ /**
224+ * Преобразование кириллических имён в URI slugs
225+ * Удобно для продуктов, категорий и т.д.
226+ * @param string $str
227+ * @return string
228+ */
229+ public static function str2url (string $ str ) : string {
230+ // Спецсимволы
231+ $ str = str_replace ( '( ' , '' , $ str );
232+ $ str = str_replace ( '( ' , '' , $ str );
233+ $ str = str_replace ( "' " , '' , $ str );
234+ $ str = str_replace ( ': ' , '' , $ str );
235+ $ str = str_replace ( 'Ø ' , '' , $ str );
236+ $ str = str_replace ( '@ ' , '' , $ str );
237+ $ str = str_replace ( '« ' , '' , $ str );
238+ $ str = str_replace ( '» ' , '' , $ str );
239+
240+ // переводим в транслит
241+ $ str = self ::rus2translit ($ str );
242+
243+ // в нижний регистр
244+ $ str = strtolower ($ str );
245+
246+ // заменям все ненужное нам на "-"
247+ $ str = preg_replace ('~[^-a-z0-9_]+~u ' , '- ' , $ str );
248+
249+ // удаляем начальные и конечные '-'
250+ $ str = trim ($ str , "- " );
251+
252+ // тут немного частных случаев для клипов
253+ $ str = str_replace ( '---- ' , '- ' , $ str );
254+ $ str = str_replace ( '--- ' , '- ' , $ str );
255+ $ str = str_replace ( '-- ' , '- ' , $ str );
256+
257+ return $ str ;
258+ }
259+
223260 /**
224261 * Транслитерация JSON
225262 * @param $json_str
0 commit comments