Проверка, вернется ли код статуса возврата 200 (не знаю, примерно 30x)
Использование cURL:
function url_exists($url) {
$ch = @curl_init($url);
@curl_setopt($ch, CURLOPT_HEADER, TRUE);
@curl_setopt($ch, CURLOPT_NOBODY, TRUE);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$status = array();
preg_match('/HTTP\/.* ([0-9]+) .*/', @curl_exec($ch) , $status);
return ($status[1] == 200);
}
// now call the function
$myUrl = "http://www.somewhere.com";
if(url_exists($myUrl)) {
echo "Link exists!";
} else {
echo "Link does not exist :(";
}
Без CURL:
function url_exists($url) {
$h = get_headers($url);
$status = array();
preg_match('/HTTP\/.* ([0-9]+) .*/', $h[0] , $status);
return ($status[1] == 200);
}
// now call the function
$myUrl = "http://www.somewhere.com";
if(url_exists($myUrl)) {
echo "Link exists!";
} else {
echo "Link does not exist :(";
}
Вы можете поиграть с ним:)
UPDATE
К обновленному вопросу.
Я не знаю точно, как работает phpBB или где вы пытаетесь его перехватить, но некоторые предложения, чтобы прекратить публикацию, могут заключаться в том, чтобы проверить ссылку с помощью javascript / jQuery, а затем отключить кнопку отправки, предупреждающую / печатающую заявление о том, почему сообщение не было опубликовано.
Я не настолько увлечен регулярными выражениями и тому подобным, но вы проверите сообщение, если оно содержит какую-либо ссылку, которую вы ищете, а затем "заблокируете" отправку формы.
Что-то вроде:
$('#myform').submit(function(event){
// disable the submit button so the user doesn't spam it
$('#myform input[type=submit]', this).attr('disabled', 'disabled');
// check with regex for the links
// if it's found return true else return false to variable preventSubmit
if(preventSubmit) {
// prevent the form from being submitted
event.preventDefault();
// notify the user
alert("You cannot post that link!");
return false;
}
});
в качестве дополнительной защиты вы можете отключить отправку по умолчанию и включить ее только после загрузки JavaScript.