PHP에서 stripos 와 mb_stripos는 둘 다 하위 문자열의 위치를 찾는 데 사용되는 기능이지만 몇 가지 중요한 차이점이 있습니다. 이 기사에서는 차이점, 적용 가능한 시나리오 및 성능 차이에 대해 자세히 설명합니다.
Stripos : PHP의 내장 함수로, 다른 문자열에서 문자열이 처음 나타나는 위치를 찾습니다. 그것은 사례에 민감하지 않으며 단일 바이트 인코딩을 기반으로하며 일반적인 ASCII 문자열에 적합합니다.
$haystack = "Hello world!";
$needle = "world";
$pos = stripos($haystack, $needle); // 나오십시오 6
MB_STRIPOS :이 기능은 다중 바이트 스트링 확장 (MBString)에서 제공됩니다. 그 기능은 stripos 와 유사합니다. 또한 하위 문자열의 위치를 찾는 데 사용되며 대소 문자를 사용하지 않습니다. Stripos 와 달리 MB_Stripos는 UTF-8, GBK 등과 같은 멀티 바이트 문자 세트를 처리하는 데 적합합니다. 멀티 바이트 인코딩 문자열의 최적화입니다.
$haystack = "안녕하세요,세계!";
$needle = "세계";
$pos = mb_stripos($haystack, $needle); // 나오십시오 3
코딩 지원 :
Stripos는 단일 바이트 인코딩 문자열 (예 : ASCII)에서만 작동하므로 UTF-8 또는 기타 멀티 바이트 문자 세트를 처리하는 문자열과 작동하지 않습니다.
MB_Stripos 는 멀티 바이트 인코딩 (예 : UTF-8, GBK 등)을 위해 특별히 설계되었으므로 멀티 바이트 문자를 포함하는 문자열을 올바르게 처리 할 수 있습니다.
성능 차이 :
일반적인 ASCII 문자열의 경우 mb_stripos 는 멀티 파이트 문자 세트를 처리하기 위해 추가 오버 헤드가 필요하기 때문에 MB_Stripos 보다 Stripos가 더 잘 수행됩니다.
처리 된 문자열이 UTF-8 또는 기타 멀티 바이트 문자 세트 인 경우 MB_Stripos는 Stripos가 이러한 문자 세트를 올바르게 처리 할 수 없기 때문에 필수적입니다.
stripos를 사용한 시나리오 :
문자열 인코딩은 단일 바이트 (예 : ASCII 인코딩)이며 Stripos를 사용하여 하위 문자열을 효율적으로 찾을 수 있습니다.
Stripos는 영어 캐릭터 또는 간단한 ASCII 문자열을 다룰 때 적합한 선택입니다.
mb_stripos를 사용한 시나리오 :
문자열 인코딩은 UTF-8, GBK, BIG5 등과 같은 멀티 바이트입니다. MB_STRIPOS를 사용하여 하위 문자열을 올바르게 찾아야합니다.
중국어, 일본어 및 한국과 같은 다중 바이트 문자가 포함 된 문자열을 처리 할 때는 MB_Stripos를 사용해야합니다.
Stripos 는 성능 측면에서 가벼운 기능입니다. 특히 문자열이 ASCII 인코딩 될 때 문자의 바이트 길이를 고려할 필요가 없기 때문에 더 빠릅니다. 그러나 멀티 바이트 문자 (예 : UTF-8 코딩 중국 문자열)를 다룰 때 MB_Stripos가 필요하며, 이는 멀티 바이트 문자의 복잡성으로 인해 약간 느리게됩니다.
<?php
$haystack = "This is a test string.";
$needle = "test";
$position = stripos($haystack, $needle);
if ($position !== false) {
echo "Found '$needle' at position $position";
} else {
echo "Not found";
}
?>
<?php
$haystack = "안녕하세요,세계!";
$needle = "세계";
$position = mb_stripos($haystack, $needle);
if ($position !== false) {
echo "Found '$needle' at position $position";
} else {
echo "Not found";
}
?>
Stripos 는 단일 바이트 문자 세트 (예 : ASCII)에 적합하며 성능이 우수합니다.
MB_STRIPOS는 이러한 문자를 올바르게 처리하는 멀티 바이트 문자 세트 (예 : UTF-8, GBK 등)에 적합합니다.
Stripos는 영어 또는 ASCII 문자를 다룰 때 더 효율적입니다. MB_Stripos는 중국어 또는 다른 멀티 바이트 캐릭터를 다룰 때 사용됩니다.