Programming

문자열이 지정된 문자열로 시작하는지 확인하는 방법은 무엇입니까?

procodes 2020. 2. 17. 22:26
반응형

문자열이 지정된 문자열로 시작하는지 확인하는 방법은 무엇입니까?


이 질문에는 이미 답변이 있습니다.

문자열이로 시작하는지 확인하려고합니다 http. 이 확인은 어떻게합니까?

$string1 = 'google.com';
$string2 = 'http://www.google.com';

substr 함수를 사용하여 문자열의 일부를 리턴하십시오.

substr( $string_n, 0, 4 ) === "http"

다른 프로토콜이 아닌지 확인하려고합니다. http://https도 일치하고 http-protocol.com과 같은 다른 항목도 있기 때문에 대신 사용하고 싶습니다 .

substr( $string_n, 0, 7 ) === "http://"

그리고 일반적으로 :

substr($string, 0, strlen($query)) === $query

사용 strpos():

if (strpos($string2, 'http') === 0) {
   // It starts with 'http'
}

세 등호 ( ===)를 기억하십시오 . 두 개만 사용하면 제대로 작동하지 않습니다. 건초 더미에서 바늘을 찾을 수 없으면 strpos()반환 되기 때문 입니다 false.


이 상황에 완벽한 strncmp()기능과 strncasecmp()기능 있습니다.

if (strncmp($string_n, "http", 4) === 0)

일반적으로 :

if (strncmp($string_n, $prefix, strlen($prefix)) === 0)

substr()접근 방식 의 장점 strncmp()은 임시 문자열을 만들지 않고 수행해야 할 작업 만 수행한다는 것입니다.


당신은 간단한 정규식 사용 (사용자로부터 업데이트 된 버전을 viriathuseregi사용되지 않습니다)

if (preg_match('#^http#', $url) === 1) {
    // Starts with http (case sensitive).
}

또는 대소 문자를 구분하지 않고 검색하려면

if (preg_match('#^http#i', $url) === 1) {
    // Starts with http (case insensitive).
}

정규식은 더 복잡한 작업을 수행 할 수 있습니다

if (preg_match('#^https?://#i', $url) === 1) {
    // Starts with http:// or https:// (case insensitive).
}

성능면에서는 substr과 달리 새 문자열을 만들거나 원하는 문자열로 시작하지 않는 경우 전체 문자열을 구문 분석 할 필요가 없습니다. 정규식을 처음 사용할 때는 성능이 저하됩니다 (만들거나 컴파일해야 함).

이 확장은 컴파일 된 정규 표현식의 전체 스레드 당 캐시를 유지합니다 (최대 4096). http://www.php.net/manual/en/intro.pcre.php


아래의 작은 함수를 사용하여 문자열이 http 또는 https로 시작하는지 확인할 수 있습니다.

function has_prefix($string, $prefix) {
   return substr($string, 0, strlen($prefix)) == $prefix;
}

$url   = 'http://www.google.com';
echo 'the url ' . (has_prefix($url, 'http://')  ? 'does' : 'does not') . ' start with http://';
echo 'the url ' . (has_prefix($url, 'https://') ? 'does' : 'does not') . ' start with https://';

또한 작동 :

if (eregi("^http:", $url)) {
 echo "OK";
}

참고 URL : https://stackoverflow.com/questions/2790899/how-to-check-if-a-string-starts-with-a-specified-string


반응형