에서 여러 단어를 검사하면 문자열에서 한 단어를 찾을 수 있지만 어떻게 많은 단어를 찾을 수 있습니까?PHP가 strpos를 사용하여 긴 한 단어 문자열
나는 문자열이 공백으로 구분 단어가있는 경우 그 방법을 알고하지만 난 array('hi','how','are','you')
와 문자열이있는 경우, 예를 들어, $string = 'hihowareyoudoingtoday?'
어떻게 일치 할 총 금액을 반환 할 수 있습니다?
에서 여러 단어를 검사하면 문자열에서 한 단어를 찾을 수 있지만 어떻게 많은 단어를 찾을 수 있습니까?PHP가 strpos를 사용하여 긴 한 단어 문자열
나는 문자열이 공백으로 구분 단어가있는 경우 그 방법을 알고하지만 난 array('hi','how','are','you')
와 문자열이있는 경우, 예를 들어, $string = 'hihowareyoudoingtoday?'
어떻게 일치 할 총 금액을 반환 할 수 있습니다?
당신은 일치의 수를 반환 preg_match_all
를 사용할 수 있습니다
$words = array('hi','how','are','you');
$nb = preg_match_all('~' . implode('|', $words) . '~', $string, $m);
print_r($m[0]);
echo "\n$nb";
preg_match_all
함수입니다 문자열의 모든 패턴을 검색합니다. 본 실시 예에서, 패턴은 다음
~hi|how|are|you~
~
은 패턴 구분자이다.
|
논리 OR
참고 인 검색이 수행되는 형태는 문자열에 문자로 바로 문자 왼쪽 각각의 대안이 하나와 일치 할 때까지 시험한다. 따라서 한 위치에서 일치하는 첫 단어는 일치 결과 ($m
)로 저장됩니다. 이 메커니즘을 이해하는 것이 중요합니다. 예를 들어, 문자열이 baobab
이고 패턴이 ~bao|baobab~
인 경우 결과는 bao
일 뿐이며 테스트 된 첫 번째 대안이기 때문입니다.
즉, 가장 큰 단어를 먼저 얻으려면 이전에 크기별로 정렬해야합니다.
예,이 경우 strpos()
를 사용할 수 있습니다
예 :
$haystack = 'hihowareyoudoingtoday?';
$needles = array('hi','how','are','you');
$matches = 0;
foreach($needles as $needle) { // create a loop, foreach string
if(strpos($haystack, $needle) !== false) { // use stripos and compare it in the parent string
$matches++; // if it matches then increment.
}
}
echo $matches; // 4
루프 및 카운터 사용 – exussum
http://php.net/manual/en/function.strpos.php 또는 http://php.net/manual/en/function.stripos.php –
@exussum 나는 생각했다. 어떤 식 으로든 속도 성능에 영향을 미칠 수 있습니까? – OGcode