Нет, нет, нет. Вы - все так очень неправильно. За исключением материала диакритических-знаков-fu, Вы добираетесь там, но что относительно азиатских символов (позор разработчикам Ruby для того, чтобы не рассматривать их nihonjin братья).
Firefox и Safari и отображают символы неASCII в URL, и откровенно они выглядят великими. Хорошо поддерживать ссылки как' http://somewhere.com/news/read/гЃЉе‰ЌгЃџгЃЎгЃЇг‚ ўгѓ ›гЃг‚ ѓгЃЄгЃ „гЃ‹ гЃ „'.
, Таким образом, вот некоторый код PHP, это сделает это, но я просто записал это и не имею напряжения, протестировал его.
1 && mb_strlen($c)===1)
{
$real_slug .= $hyphen . $c;
$hyphen = '';
}
else
{
switch($c)
{
case '&':
$hyphen = $real_slug ? '-and-' : '';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
$real_slug .= $hyphen . $c;
$hyphen = '';
break;
default:
$hyphen = $hyphen ? $hyphen : ($real_slug ? '-' : '');
}
}
}
return $real_slug;
}
Пример:
$str = "~!@#$%^&*()_+-=[]\{}|;':\",./<>?\n\r\t\x07\x00\x04 コリン ~!@#$%^&*()_+-=[]\{}|;':\",./<>?\n\r\t\x07\x00\x04 トーマス ~!@#$%^&*()_+-=[]\{}|;':\",./<>?\n\r\t\x07\x00\x04 アーノルド ~!@#$%^&*()_+-=[]\{}|;':\",./<>?\n\r\t\x07\x00\x04";
echo slug($str);
Выводы: г‚ €гѓјгѓћг ігѓЄгѓі-гѓ‚ №-and-г‚ ўгѓјгѓЋгѓ «гѓ ‰
'-and-' то, потому что & будьте изменены на '-and-'.
Многие (большинство?) Систем сборки используют дату и время последнего изменения файлов для определения необходимости выполнения перекомпиляции. Сначала я бы проверил, что даты файлов соответствуют ожиданиям; например, если файлы находятся на сетевом диске, могут быть разные настройки времени или расхождения часов, из-за которых может показаться, что файлы были изменены в будущем, поэтому система сборки всегда компилирует их. В этом отношении, если они находятся на сетевом диске, используемый протокол может не включать дату изменения, и система просто устанавливает по умолчанию «сейчас», поэтому всегда будет выглядеть так, как будто каждый файл был только что изменен.
По моему опыту, он перекомпилирует то, что изменилось, и все, что зависит от того, что было изменено. Итак, если вы редактируете файл .h, который помещает #import
'd в каждый другой файл, то, естественно, все потребуется перекомпилировать. Однако, если вы редактируете только файл .m, перекомпилировать следует только файл .m. Я не знаю ни одной настройки Xcode, которая могла бы изменить это поведение.