JavaScript Regex: окружите _____, # _____, и http://______ с тегами привязки в одной передаче?

Я нашел этот ответ здесь :

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 переменную заголовка ответа с кодом статуса.

5
задан 10 revs, 8 users 44% 23 May 2017 в 12:19
поделиться

2 ответа

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
1
ответ дан 15 December 2019 в 06:32
поделиться
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 .

2
ответ дан 15 December 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: