Am'm încercarea de a verifica dacă un șir de caractere care începe cu "http". Cum pot face aceasta verificare?
$string1 = 'google.com';
$string2 = 'http://www.google.com';
Utilizați substr funcția să returneze o parte din un șir de caractere.
substr( $string_n, 0, 4 ) === "http"
Daca're încercarea de a face sigur că-l's nu un alt protocol. Am'd folosi http://
în loc, deoarece https ar potrivi, de asemenea, și alte lucruri, cum ar fi http-protocol.com.
substr( $string_n, 0, 7 ) === "http://"
Și, în general:
substr($string, 0, strlen($query)) === $query
Folosi strpos()
:
if (strpos($string2, 'http') === 0) {
// It starts with 'http'
}
Amintiți-vă cele trei este egal cu semne (===
). Acesta nu va funcționa corect dacă utilizați numai două. Acest lucru este pentru că strpos()
va reveni "fals" dacă acul nu poate fi găsit în carul cu fân.
Există, de asemenea, strncmp()
funcția și strncasecmp()
funcția, care este perfect pentru această situație:
if (strncmp($string_n, "http", 4) === 0)
În general:
if (strncmp($string_n, $prefix, strlen($prefix)) === 0)
Avantajul de-a lungul substr()
abordare este că strncmp()` doar face ceea ce trebuie făcut, fără a crea un șir temporar.
Puteți utiliza un simplu regex (versiune actualizată la utilizator viriathus ca eregi
este învechită)
if (preg_match('#^http#', $url) === 1) {
// Starts with http (case sensitive).
}
sau, dacă doriți un caz insensibil căutare
if (preg_match('#^http#i', $url) === 1) {
// Starts with http (case insensitive).
}
Regexes permite de a efectua mai multe sarcini complexe
if (preg_match('#^https?://#i', $url) === 1) {
// Starts with http:// or https:// (case insensitive).
}
Performanță înțelept, nu't nevoie pentru a crea un nou string (spre deosebire de cu substr) și nici analiza întregul șir, dacă nu't începe cu ceea ce vrei. Va avea o penalizare de performanță, deși 1 dată când utilizați regex (aveți nevoie pentru a crea/compila).
Această extensie menține un nivel global pe fir cache de compilat regulat expresii (de până la 4096). http://www.php.net/manual/en/intro.pcre.php
Puteți verifica dacă șirul începe cu http sau https folosind mici funcție de mai jos.
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://';