문맥에서 'açilek'이라는 단어의 존재를 확인하고 싶습니다. 이것을 실행 :
$word = 'açilek';
$article='elma and açilek word';
$mat=preg_match('/\b'. $word .'\b/', $article);
var_dump($mat);
성공합니다. 이것은 예상됩니다. 그러나 'çilek'라는 단어와 일치하기 위해 코드는 예상하지 않은 False를 반환합니다.
$word = 'çilek';
$article='elma and çilek word';
$mat=preg_match('/\b'. $word .'\b/', $article);
var_dump($mat); //returns false !!!!
또한 예상치 못한 단어의 일부인 경우이 단어와 일치합니다.
$word = 'çilek';
$article='elma and açilek word';
$mat=preg_match('/\b'. $word .'\b/', $article);
var_dump($mat); //returns true !!!!
이 동작이 나타나는 이유는 무엇입니까?
/u
정규식 (특히 \b
)이 유니 코드를 인식 하도록하려면 한정자 를 사용해야합니다 .
$mat=preg_match('/\b'. $word .'\b/u', $article);
그렇지 않으면 \b
ASCII 영숫자와 ASCII가 아닌 ASCII 사이의 위치 만 단어 경계로 간주하므로 a
및 çilek
사이가 아닌 사이
와 일치 çilek
합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다