abcdefg123hijklm
과 같은 문자열이 있습니다. 나는 또한 여러 문자열을 포함하는 배열이 있습니다. 이제 내 abcdefg123hijklm
을 확인하고 abcdefg123hijklm
의 123
이 배열에 있는지 확인하려고합니다. 어떻게해야합니까? 나는 in_array()
실 거예요?문자열을 PHP에서 문자열의 배열과 비교합니까?
고마워요?
abcdefg123hijklm
과 같은 문자열이 있습니다. 나는 또한 여러 문자열을 포함하는 배열이 있습니다. 이제 내 abcdefg123hijklm
을 확인하고 abcdefg123hijklm
의 123
이 배열에 있는지 확인하려고합니다. 어떻게해야합니까? 나는 in_array()
실 거예요?문자열을 PHP에서 문자열의 배열과 비교합니까?
고마워요?
그래서 특정 문자열의 하위 문자열 ($searchstring
)이 배열에 있는지 확인하고 싶습니까? 당신은 배열을 반복하고 문자열을 확인해야합니다 그렇다면 :
foreach($array as $string)
{
if(strpos($searchstring, $string) !== false)
{
echo 'yes its in here';
break;
}
}
참조 : http://php.net/manual/en/function.strpos.php
당신은 문자열의 특정 부분은 당신이 필요합니다 배열에 있는지 확인하려면 substr()
을 사용하여 문자열의 해당 부분을 분리 한 다음 in_array()
을 사용하여 찾으십시오.
또 다른 옵션과 같이, 정규 표현식을 사용하고 내파하는 것입니다 :
if (preg_match('/'.implode('|', $array).'/', $searchstring, $matches))
echo("Yes, the string '{$matches[0]}' was found in the search string.");
else
echo("None of the strings in the array were found in the search string.");
그것은 조금 적은 코드, 그리고 나는 그것이 큰 검색 문자열 또는 더 효율적으로 기대 왜냐하면 검색 문자열은 배열의 모든 요소에 대해 한 번이 아니라 한 번 구문 분석되어야하기 때문입니다. (implode의 오버 헤드를 추가하더라도)
하나의 단점은 일치하는 문자열의 배열 인덱스를 반환하지 않는다는 것입니다. 따라서 필요한 경우 루프가 더 좋은 옵션이 될 수 있습니다.
$match_index = array_search($matches[0], $array);
편집 한 다음 위 그러나 당신은 또한 코드를 찾을 수 : 이것은 당신이 당신의 문자열이 정규 표현식 특수 문자를 포함하지 않을 알고 가정합니다. 진실한 예제와 같은 영숫자 문자열의 경우, 더 복잡한 문자열을 사용하려면 먼저 이스케이프 처리해야합니다. 이 경우 루프를 사용하는 다른 솔루션은 아마도 더 간단 할 것입니다.
역으로 수행 할 수 있습니다. 문자열이 $ string이고 array가 $ array라고 가정합니다.
foreach ($array as $value)
{
// strpos can return 0 as a first matched position, 0 == false but !== false
if (strpos($string, $value) !== false)
{
echo 'Matched value is ' . $value;
}
}
$ strpos()의 시작 부분에 $ 값이 있으면 false로 평가되는 0이 반환되므로 항상 작동하지 않습니다. –
사용이이 번호를 얻기 위해
$re = "/(\d+)/";
$str = "abcdefg123hijklm";
preg_match($re, $str, $matches);
및 (123 $가 될 수 일치 [1] 위) :
preg_grep('/123/', $array);
한 단어 preg_grep() – ArtisticPhoenix