문제

영어와 아랍어로 책 제목이있는 MySQL 데이터베이스가 있으며 PHP 클래스 이는 아랍어 텍스트를 라틴 스크립트로 자동 번역 할 수 있습니다.

내 출력 html이 다음과 같이 보이도록하고 싶습니다.

<h3>A book</h3>
<h3>كتاب <em>(kitaab)</em></h3>
<h3>Another book</h3>

PHP가 사용 된 유니 코드 문자와 글리프를 기반으로 문자열의 언어를 결정하는 방법이 있습니까? 나는 다음과 같은 것을 얻으려고 노력하고 있습니다.

$Ar = new Arabic('EnTransliteration');
while ($item = mysql_fetch_array($results)) {
    ...
    if (some test to see if $item['item_title'] has Arabic glyphs in it) {
      echo "<h3>$item[item_title] <em>(" . $Ar->ar2en($item['item_title']) . ")</em></h3>";
    } else {
      echo "<h3>$item[item_title]</h3>";
    }
    ...
}

다행히도 라틴 캐릭터를 먹이면 수업이 질식하지 않으므로 이론적으로는 모든 결과를 변환을 통해 보낼 수 있지만 처리 낭비처럼 보입니다.

감사!

편집하다:나는 여전히 글리프 나 캐릭터를 확인하는 방법을 찾지 못했습니다. 나는 모든 아랍어 문자를 배열에 넣고 배열의 어떤 것이 문자열의 일부와 일치하는지 확인할 수 있다고 생각합니다 ...

그러나 결국 잘 작동 할 수있는 중간 솔루션을 찾았습니다. 언어에 관계없이 모든 제목을 변환을 통해 배치하지만 문자열이 변경된 경우 괄호로 음역을 출력합니다.

while ($item = mysql_fetch_array($mysql_results)) {
    $transliterate = trim(strtolower($Ar->ar2en($item['item_title'])));
    $item_title = (strtolower($item['item_title']) == $transliterate) ? $item['item_title'] : $item['item_title'] . " <em>($transliterate)</em>";

    echo "<h3>$item_title</h3>";
}
도움이 되었습니까?

해결책

이렇게해야합니다.

preg_match("/\p{Arabic}/u", $item['item_title'])

원한다면 정규 표현을 좀 더 정교하게 만들 수 있지만, 나는 당신이 정말로 필요하지 않다고 생각합니다.

그만큼 \p 탈출 시퀀스 유니 코드 속성을 기준으로 문자를 선택할 수 있습니다 ( u 패턴 수정 자 사용).

PHP 매뉴얼은 다음과 같이 언급합니다. 그러나 그것은 더 이상 전적으로 사실이 아닙니다. PCRE 릴리스 6.5 스크립트 이름에 대한 지원이 추가되었습니다.

다른 팁

다음은 아랍어 문자 세트 자동 감지를위한 PHP 오픈 소스 클래스입니다.

http://www.ar-php.com/php/arabic/index.html#archarchetd

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top