我制作了这个脚本,要求用户输入facebook网址。该部分运行良好,但用户仍然可以在url变量中添加特殊字符,我正试图阻止它。
我希望正则表达式只允许使用字母数字字符,破折号和下划线。而不是允许空间。
我尝试将[a-zA-Z0-9_]添加到我的正则表达式中,但它不起作用。
<?php
$facebook_url = "http://www.facebook.com/user";
if(!preg_match('^facebook\.com\S*[a-zA-Z0-9_]*^', $facebook_url)){
//if(!preg_match('^http://(?:.*\.)?facebook\.com\S*[a-zA-Z0-9_]*^', $facebook_url)){
echo "ummm, this is not a facebook url";
} else {
echo "this is a facebook url";
}
?>
<br />
<a href="<?php echo $facebook_url?>" target="_blank">My Facebook</a>
答案 0 :(得分:2)
你应该删除&#39; ^&#39;字符。 (此标志标志着该行的开头)
preg_match('/(https?:\/\/)?([\w\.]*)facebook\.com\/([a-zA-Z0-9_]*)$/', $facebook_url)
答案 1 :(得分:0)
请删除&#39; ^&#39;从开头到结尾的字符。使用此:
'facebook\.com\/[a-zA-Z0-9_]*$'
P.S。在网址中也允许下划线(&#39; _&#39;)。没有下划线:
'facebook\.com\/[a-zA-Z0-9]*$'