문자열이 지정된 문자열로 시작하는지 확인하는 방법은 무엇입니까?
이 질문에는 이미 답변이 있습니다.
문자열이로 시작하는지 확인하려고합니다 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()
은 임시 문자열을 만들지 않고 수행해야 할 작업 만 수행한다는 것입니다.
당신은 간단한 정규식 사용 (사용자로부터 업데이트 된 버전을 viriathus 로 eregi
사용되지 않습니다)
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
'Programming' 카테고리의 다른 글
Android Min SDK 버전과 대상 SDK 버전 (0) | 2020.02.17 |
---|---|
소수점 이하 두 자리로 반올림 (0) | 2020.02.17 |
AVFoundation, CaptureStillImageAsynchronouslyFromConnection을 캡처 할 때 셔터 사운드를 끄는 방법은 무엇입니까? (0) | 2020.02.17 |
검색 엔진을 사용하여 특수 문자를 검색하려면 어떻게해야합니까? (0) | 2020.02.17 |
CSS를 사용하여 텍스트 길이를 n 줄로 제한 (0) | 2020.02.17 |