Skip to content

Commit 9bf749c

Browse files
committed
new str2url function
1 parent aceab16 commit 9bf749c

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

src/Std.php

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)