Я нашел этот ответ здесь :
if(($twitter_XML_raw=file_get_contents($timeline))==false){
// Retrieve HTTP status code
list($version,$status_code,$msg) = explode(' ',$http_response_header[0], 3);
// Check the HTTP Status code
switch($status_code) {
case 200:
$error_status="200: Success";
break;
case 401:
$error_status="401: Login failure. Try logging out and back in. Password are ONLY used when posting.";
break;
case 400:
$error_status="400: Invalid request. You may have exceeded your rate limit.";
break;
case 404:
$error_status="404: Not found. This shouldn't happen. Please let me know what happened using the feedback link above.";
break;
case 500:
$error_status="500: Twitter servers replied with an error. Hopefully they'll be OK soon!";
break;
case 502:
$error_status="502: Twitter servers may be down or being upgraded. Hopefully they'll be OK soon!";
break;
case 503:
$error_status="503: Twitter service unavailable. Hopefully they'll be OK soon!";
break;
default:
$error_status="Undocumented error: " . $status_code;
break;
}
По существу, Вы используете "файл, заставляют содержание" метод получать URL, который автоматически заполняет http переменную заголовка ответа с кодом статуса.
s/(?<!\w)(@\w*|#\w*|http:\/\/[\w\/\.?=]*\w)/<a>$1<\/a>/g
Думаю, это подойдет. Он не будет соответствовать @ ..., # ... или http ..., если перед ним стоит цифра или буква, что будет препятствовать отправке электронной почты. Пожалуйста, проверьте набор входных данных и сообщайте о любых сбоях, чтобы я мог их адекватно использовать.
URL-адрес, в частности, довольно жесткий. Сейчас я ошибаюсь в сторону консерваторов. Если хотите, его можно изменить так, чтобы он останавливался только на точке, пробеле и скобках.
Теперь, что касается различных ссылок для @, # и http ..., вы должны использовать функцию для замены, как показано в другой ответ.
Сделав три прохода, просто выполните:
s/(?<!\w)(http:\/\/[\w\/\.?=]*\w)/<a href="c">$1<\/a>/g
s/(?<!\w)(#\w*)/<a href="b">$1<\/a>/g
s/(?<!\w)(@\w*)/<a href="a">$1<\/a>/g
var sample = "@sample";
sample = sample.replace(/[^\s+-+.+](@\w+|#\w+|http://[\w\./]+)[$\s+-+.+]/g, "<a>$1</a>");
$ 1
вставляет совпавшую строку.
Использование функций (которые я рекомендую для вашей конкретной ситуации):
var sample = "@sample";
sample = sample.replace(/[^\s+-+.+](@\w+|#\w+|http://[\w\./]+)[$\s+-+.+]/g, function(str) {
var href="";
if(str.indeoxOf("#") !== -1)
href=str;
else if(str.indexOf("@") !== -1)
...
return "<a href="+href+">"+str+"</a>";
});
Использование функций - хорошая идея, когда вы хотите иметь больший или более точный контроль. Этот способ проще, если вы хотите, чтобы ссылки имели разные href в своих тегах привязки.
Подробнее см. здесь, в MDC .