2010-12-11 39 views
18

Tôi chắc chắn đây là giải pháp đơn giản, chưa tìm thấy chính xác những gì tôi cần.Kiểm tra xem biến có bắt đầu bằng 'http'

Sử dụng php, tôi có nguồn $ biến. Tôi muốn kiểm tra xem nguồn $ có bắt đầu bằng 'http' hay không.

if ($source starts with 'http') { 
$source = "<a href='$source'>$source</a>"; 
} 

Cảm ơn!

Trả lời

43
if (strpos($source, 'http') === 0) { 
    $source = "<a href=\"$source\">$source</a>"; 
} 

Lưu ý tôi sử dụng ===, không ==strpos lợi nhuận boolean false nếu chuỗi không chứa trận đấu. Zero là falsey trong PHP, vì vậy kiểm tra bình đẳng nghiêm ngặt là cần thiết để loại bỏ sự mơ hồ.

tham khảo:

http://php.net/strpos

http://php.net/operators.comparison

+3

Bạn nhầm lẫn đống cỏ với kim. – Ben

+0

@Ben: đẹp bắt, cảm ơn. – Jonah

+0

Làm việc như một sự quyến rũ. Cảm ơn rất nhiều cho các trả lời nhanh :) Và các liên kết thêm để đọc về strpos – Andelas

12

Bạn muốn substr() chức năng.

if(substr($source, 0, 4) == "http") { 
    $source = "<a href='$source'>$source</a>"; 
} 
+0

Rất tiếc, cần phải là '0, 4', không phải' 4'. '4' sẽ nhận mọi thứ _but_ http :) – Jonah

+0

@Jonah: Tôi đã chỉnh sửa trong khi bạn đang viết nhận xét. ["Chết tiệt! Tôi luôn làm thế. Tôi luôn làm rối tung một số chi tiết trần tục." - Michael Bolton] (http://www.imdb.com/title/tt0151804/) – AgentConundrum

+0

Bạn nên kiểm tra nó, tôi tin rằng nó sẽ lấy toàn bộ chuỗi * từ * vị trí 4 –

5
if(strpos($source, 'http') === 0) 
    //Do stuff 
+0

Có lẽ là cách thanh lịch nhất để kiểm tra xem một chuỗi bắt đầu với một số chuỗi con trong PHP. – Robert

+0

Lolwut? Bạn thực sự hỏi tại sao và nói rằng 'strpos' (những gì tôi vừa nhận xét là cách thanh lịch nhất) rõ ràng hơn? – Robert

+0

@Robert: Ồ, hehe, tôi đọc nhầm. Tôi nghĩ bạn đang nói rằng giải pháp 'substr' tốt hơn. Lỗi của tôi :) – Jonah

Các vấn đề liên quan