2011-10-01 1 views
2

다음과 같은 slugify 메소드를 사용하고 있습니다. 내 프로덕션 서버 (CentOS) 및 PCRE UTF8에서 지원되지만 "유니 코드 속성 없음"이 지원됩니다.preg_replace()를 사용하지 않고 PHP 슬러그 메소드

function slugify($text) 
{ 
    // replace non letter or digits by - 
    $text = preg_replace('~[^\\pL\d]+~u', '-', $text); 

    // trim 
    $text = trim($text, '-'); 

    // transliterate 
    if (function_exists('iconv')) { 
     $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); 
    } 

    // lowercase 
    $text = strtolower($text); 

    // remove unwanted characters 
    $text = preg_replace('~[^-\w]+~', '', $text); 

    if (empty($text)) { 
     return 'n-a'; 
    } 
    return $text; 
} 

preg_replace이다가 작동하지 않는 경우, preg_replace이다 또는 상기 함수로서 작동 할 수있는 slugify muthod로 동작 할 수있는 방법이있다.

미리 감사드립니다.

+0

us-ascii로 변환 한 경우 UTF8 지원이 필요한 이유는 무엇입니까? "작동하지 않음"을 정의하십시오. –

+0

왜 투표가 취소 되었습니까? – Atticus

+0

유니 코드 속성 지원이 실제로 필요합니다. – mushfiq

답변

1

여기에 설명 된 것과 동일한 문제인 http://chrisjean.com/2009/01/31/unicode-support-on-centos-52-with-php-and-pcre/처럼 들립니다. 나는 스스로 해결하기 전에 그것을 실행했다. 그리고 그 링크는 어떻게 고쳐 졌는지 (또는 오히려 우리의 시스템 관리자가 그것을 어떻게 고정 시켰는가)이다.

"유니 코드 속성 지원"이없는 경우 기본적으로 첫 번째 정규식의 \ pL이 실행되거나 컴파일되지 않습니다.

+0

예, 맞습니다. rpm을 재구 축하였습니다. – mushfiq