Я использую этот код в качестве чистого генератора URL-адресов в Symfony 2.6:
namespace AppBundle\Utility;
class Utility {
public static function getSlug($string, $separator = '-')
{
// Source: http://cubiq.org/the-perfect-php-clean-url-generator
$slug = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
$slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);
$slug = strtolower(trim($slug, $separator));
$slug = preg_replace("/[\/_|+ -]+/", $separator, $slug);
return $slug;
}
}
Он отлично работает в моей среде разработки, со специальными символами, но не в моей среде prod (мой сервер). Это не меняет персонажей типа é ñ ñ%, они просто исчезают. Пример «Artículo año 2000», он показывает: «artculo-ao-2000».
Я установил PHP 5.5.23 в CentOS 5.11, я добавил UTF-8 в качестве кодировки по умолчанию в http.conf для Apache и в php.ini, если я ввожу «php app / check.php», все в порядке, но он только предлагает ускоритель PHP.
Я попытался загрузить файл со специальным символом /holá.html, и он отлично работает.
Я не знаю, что еще делать. Это из-за тычок конфигурация среды?
iconv()
требует правильного setlocale();
, Убедитесь, что вы не меняете его между средами, и, если ваша машина для разработки отличается от prod, проверьте, если у вас установлены правильные локали.
Других решений пока нет …