2011-12-07 5 views
0

CakePHP 1.2 Inflector 클래스에는 공백을 밑줄로 변환하고 악센트 부호가있는 문자를 액센트가없는 문자로 변환하고 비 단어 문자가 제거되는 slug() 메서드가 있습니다.CakePHP 1.2에서 Inflector :: slug()에 비 단어 문자를 추가하는 방법은 무엇입니까?

나는 특별한 두 배 따옴표 [ "와"]이 제거되지 않아요 경우가 있습니다.

나는 내가 따옴표 문자를 배치해야 라인을 볼 수 있지만 나는 그들이 올바르게 인식하는 형식의 문자를 넣어 사용하는 어떤 도구 모른다. (즉, 공간으로 변환되어 궁극적으로 제거되는 특별한 작은 따옴표입니다).

답변

0

필자가 궁금해했던 점은 Chrome에서 인코딩 기능을 사용하여 필요한 문자를 얻는 것이 었습니다. 일반적으로 웹 페이지에는 UTF-8 문자 세트가 있으므로 Chrome을 ISO-8859-1로 표시해야합니다. 그것은 메뉴, 도구, 인코딩 및 인코딩을 선택합니다.

실제로 Inflector :: slug()를 변경하면 '/[^\w\s]/' => ' ', 행이 '/–|“|’|â€|[^\w\s]/' => ' ',으로 변경됩니다.

I 변환해야했습니다 [^ \ \ s는 ▼] 마지막으로, 그리고 â € 초 지속. [^ \ w \ s]가 더 빠르면, €은 공백으로 변환되고, 그것을 사용하는 다른 특수 문자는 변환되지 않습니다. 그리고 â €와 비슷한 거래가있어.

사용 된 교체 문자열이 완전하지 않습니다. 현재 특수 대시, 특수 거꾸로 된 큰 따옴표, 특수 이중 인용 부호 및 특수 작은 따옴표를 필요로합니다.

0

당신은 인플로를 pusing 전에 비 ASCII 문자를 제거 할 수 있습니다.

<?php $output = preg_replace('/[^(\x20-\x7F)]*/','', $input); ?> 
+0

내가 할 수는 있겠지만, 특수 유니 코드 문자가 변형 된 문자는 ascii 문자와 비 ASCII 문자로 구성되어 있다고 생각합니다./[^ \ w \ s]/to를 사용하는 기본 구현 문제 중 하나는 €에서 €가 제거되어 나머지 문자를 유효한 단어 문자로 남겨 두는 것입니다. – Reuben