2010-08-17 26 views
5

Tôi muốn có cụm từ thông dụng để đảm bảo bắt đầu chuỗi chứa 'http: //' và '/' và kết thúc.preg_match: đảm bảo bắt đầu và kết thúc chứa nội dung nào đó

Đây là phiên bản còn tôi đã đưa ra,

if(!preg_match("/(^http:\/\//", $site_http)) 
{ 
$error = true; 
echo '<error elementid="site_http" message="site_http - Your link appears to be invalid. Please confirm that your link contains http:// at the start."/>'; 
} 
elseif (!preg_match("/\/$/", $site_http)) 
{ 
$error = true; 
echo '<error elementid="site_http" message="site_http - Your link appears to be invalid. Please confirm that your link has ended with a /."/>'; 
} 

nhưng tôi nghĩ rằng hai biểu thức này có thể đặt lại với nhau như dưới đây, nhưng nó wont work,

if(!preg_match("/(^http:\/\/)&(\/$)/", $site_http)) 
{ 
$error = true; 
echo '<error elementid="site_http" message="site_http - Your link appears to be invalid. Please confirm that your link contains http:// at the start and a/at the end."/>'; 
} 

các biểu thức nhiều mà tôi cố gắng kết hợp phải sai! bất kỳ ý tưởng?

cảm ơn, Lau

+0

Bạn có thể cung cấp một mẫu chuỗi? – Codex73

Trả lời

9
if(preg_match('/^http:\/\/.*\/$/', $site_http)) 
{ 
    ... 
} 

Các ^http:\/\/ lực lượng http:// ở phía trước, các \/$ buộc một dấu gạch chéo ở cuối, và .* cho phép tất cả mọi thứ (và có thể không có gì) giữa.

Ví dụ:

<?php 

foreach (array("http://site.com.invalid/", "http://") as $site_http) { 
    echo "$site_http - "; 
    if (preg_match('/^http:\/\/.*\/$/', $site_http)) { 
    echo "match\n"; 
    } 
    else { 
    echo "no match\n"; 
    } 
} 
?> 

tạo đầu ra sau đây:

http://site.com.invalid/ - match 
http:// - no match
+0

vụ nổ, bạn đánh tôi với nó. Đã gõ khi nó nói một câu trả lời mới. :) –

+0

cảm ơn bạn rất nhiều, gbacon! huyền thoại! :-)) – laukok

+0

@lauthiamkok Bạn được chào đón! Tôi vui vì nó giúp. –

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