2009-10-22 3 views
0

PHP 포럼 소프트웨어 (FluxBB)를 사용하고 있는데 재미있는 오류가 발생했습니다. PHP는 문자열 중간에 줄임표를 삽입하고 있습니다.PHP는 줄의 가운데에 줄임표 (!)를 삽입합니까?

그물에서 발견 된 비슷한 오류로 인해이 코드는 함수에 있고 그 글자는 이 전역 변수라고 말할 수밖에 없습니다.

다음은 (간체) 코드입니다 :

// Get unique words from the above arrays 
$unique_words = array_unique(array_merge($words['add']['post'], $words['add']['subject'])); 

if (!empty($unique_words)) 
{ 
    $result = $db->query('SELECT id, word FROM '.$db->prefix.'search_words WHERE word IN('.implode(',', preg_replace('#^(.*)$#', '\'\1\'', $unique_words)).')', true) or error('Unable to fetch search index words', __FILE__, __LINE__, $db->error()); 

    $word_ids = array(); 
    while ($row = $db->fetch_row($result)) 
     $word_ids[$row[1]] = $row[0]; 

이제 $unique_words (이 경우) 여러 프랑스어 단어로 구성되며, 줄임표는 바로 쉼표 전에 닫는 인용 뒤에 를 추가됩니다. 그것은 함축 호출 중에 추가된다는 것을 의미합니다. 이는 전혀 이해가되지 않습니다.

참고 : 단어를 이스케이프 처리합니다.

실제로 디버거에서 누출 된 쿼리는 실행되기 전에 저장되므로 PHP 만 오류를 유발할 수 있습니다. 우리는 실제로 그것을 해결하기 위해 관리

+1

'$ words [ 'add'] [ 'post']'및'$ words [ 'add'] [ 'subject']'예제 데이터를 제공하여 문제를 재현 할 수 있습니까? 'var_export ($ words [ 'add'])'의 결과는 좋을 것입니다. – VolkerK

+0

나는 정말로 그들을 물을 수는 있지만. 예제 쿼리에 대해서는 다음 답변을 참조하십시오. 원래 주제에 대한 자세한 정보는 http://fluxbb.org/forums/post/26036/#p26036 (내가 말했듯이 이것은 가장 이상한 것 중 하나이기 때문에이 부분을 중계하고 있습니다. 내가 지금까지 만난 오류) – Franz

+0

그리고 네, 줄임표를 의미했습니다. – Franz

답변

0

실제로 지원을 제공하기 위해 노력하고있어,하지만 난 합리적인 해결책을 올 수없는 (또는 오히려이 문제를 파악). 문제는이 게시물을 작성한 회원 중 한 명이 Microsoft Word 또는 이와 유사한 프로그램에서 글을 작성한 것 같았습니다. 여러분 모두 아시다시피 Word는 세 점을 자동으로 줄임표로 변환합니다. 따라서 게시물에는 실제로 타원이 포함되었습니다.

preg_replace 함수가 utf-8 문자에 문제가있는 것처럼 보이기 때문에 포럼에 텍스트를 붙여 넣을 때 문제가 발생했습니다. 그럼에도 불구하고 내 패치가 작동하지 않았기 때문에 (또한 다른 preg_replace를 처리하기 위해 수정 된 버전을 사용하지 않았기 때문에) 유일한 옵션 인 것 같지 않습니다.

당신에게 올바른 방향으로 나를 지적한 Volker.