I'm mencoba untuk memeriksa apakah string dimulai dengan http
. Bagaimana saya bisa melakukan pemeriksaan ini?
$string1 = 'google.com';
$string2 = 'http://www.google.com';
Menggunakan substr fungsi untuk mengembalikan bagian dari string.
substr( $string_n, 0, 4 ) === "http"
Jika anda're mencoba untuk memastikan itu's tidak protokol lain. I'd gunakan http://
bukan, sejak https juga akan pertandingan, dan hal-hal lain seperti http-protocol.com.
substr( $string_n, 0, 7 ) === "http://"
Dan secara umum:
substr($string, 0, strlen($query)) === $query
Gunakan strpos()
:
if (strpos($string2, 'http') === 0) {
// It starts with 'http'
}
Ingat tiga tanda sama dengan (===
). Ini tidak akan bekerja dengan baik jika anda hanya menggunakan dua. Hal ini karena strpos()
akan menghasilkan false
jika jarum tidak dapat ditemukan di tumpukan jerami.
Ada juga strncmp()
fungsi dan strncasecmp()
fungsi yang sempurna untuk situasi ini:
if (strncmp($string_n, "http", 4) === 0)
Secara umum:
if (strncmp($string_n, $prefix, strlen($prefix)) === 0)
Keuntungan atas substr()
pendekatan strncmp()
hanya melakukan apa yang perlu dilakukan, tanpa membuat sementara string.
Anda dapat menggunakan sederhana regex (versi update dari pengguna viriathus sebagai eregi
deprecated)
if (preg_match('#^http#', $url) === 1) {
// Starts with http (case sensitive).
}
atau jika anda ingin kasus sensitif cari
if (preg_match('#^http#i', $url) === 1) {
// Starts with http (case insensitive).
}
Regexes memungkinkan untuk melakukan tugas yang lebih kompleks
if (preg_match('#^https?://#i', $url) === 1) {
// Starts with http:// or https:// (case insensitive).
}
Kinerja bijaksana, anda don't perlu membuat string baru (berbeda dengan substr) atau mengurai seluruh string jika itu doesn't mulai dengan apa yang anda inginkan. Anda akan memiliki kinerja penalti meskipun 1 kali anda menggunakan regex (anda perlu membuat/compile).
ekstensi Ini memelihara global per-benang cache disusun teratur ekspresi (hingga 4096). http://www.php.net/manual/en/intro.pcre.php
Anda dapat memeriksa apakah string dimulai dengan http atau https kecil yang menggunakan fungsi di bawah ini.
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://';