2011-08-31 7 views
2

대부분의 경우 모든 대문자로 입력 된 제품 이름으로 구성된 SAGE200 데이터베이스가 있습니다. 이들은 입력 된대로 우리 웹 사이트에 표시되고 있습니다.보기 흉합니다. 저는 PHP를 처음 사용했지만 ucwords 함수를 발견하고이를 strtolower와 함께 사용하여 표시되는 항목의 Title Case로 끝 맺었습니다. 일부 제품의 경우 대문자 나 단어가 필요하므로 이상적인 것은 아닙니다. 올바른 이름 지정 규칙이므로 올바른 방법입니다.UCWords 기능을 수정했습니다

제목 케이스를 내 제품 이름에 적용하고 일부 단어를 모두 대문자로 남겨두기 위해 정의한 목록에 대한 조회가되도록 코드를 작성하는 방법이 있습니까?

이것은 모두 Magento 1.4.0.1입니다.

아마도 번역 파일입니까?

저는이 문제에 접근하는 가장 좋은 방법이 확실치 않으며 어떤 조언을 부탁드립니다.

건배!

+0

내가 사용할 수있는 메이지 설치가 없지만, 가장 좋은 코스는 모델의 제품 이름에 도우미를 사용하는 것입니다. 설치를 할 수 있다면 분명히 게시 할 것입니다. 일부 코드. – Nic

+0

그것은 멋질 것입니다. 나는 아직 이런 종류의 일을하는 법을 모른다 (아직 충분한 시간을 보냈지 않았다!) - 고마워! – robgt

답변

0

번역본을 이미 알고 있다면 (번역 파일 제안 이후) 데이터베이스의 제품 이름을 변환하지 않는 것이 좋을까요?

0

하나의 옵션은 대문자로하고 싶은 글자를 대문자로 남겨두고 ucwords 함수 만 단어의 시작 부분을 대문자로 유지하는 것입니다. 당신은 ucwords를 사용하지 않을 것입니다. 다음을 사용하십시오 :

$string = preg_replace('/(^|[^a-zA-Z])[a-z]/e', 'strtoupper("$0")', $string); 

문자 뒤에 나오지 않는 문자는 모두 대문자입니다.

그렇지 않으면 대문자로 표시 할 단어 목록이있는 경우 ucwords는 문자를 소문자로 처리하지 않기 때문에 ucwords를 사용하기 전에 그렇게 할 것입니다.

$string = strtolower($string); 
foreach($mywordlist as $word) 
    $string = str_replace(strtolower($word), strtoupper($word), $string); 
$string = ucwords($string); 

주의 사항 : 그것은처럼 보일 것이다 내가 위에서 사용 된 preg_replace이다가 비 공백 문자가있는 단어를 uppercases 때문에 나는 ucwords 대신에 모든 시간을 사용하는 것입니다. 예 : ucwords는 tick-tock을 Tick-tock으로 변환합니다. 내 preg_replace가이를 Tick-Tock으로 변환합니다.

관련 문제