2011-01-24 5 views
2

Я хотел бы проверить строку и преобразовать все подстроки, которые могут быть потенциальными ссылками внутри исходной строки, например http://www.google.com, или на www.google.com, заменить на <a href='http://www.google.com'>http://www.google.com</a>, чтобы я мог создавать реальные ссылки от них.PHP url create from string

Как я могу это сделать?

+3

возможно дубликат [? Как linkify URLs в строке с PHP] (http://stackoverflow.com/questions/507436/how-do-i-linkify-urls-in-a-string-with-php) – alexn

+0

@alexn: Не совсем так, поскольку Александр хочет также связывать URL-адреса без 'http: //'. –

+0

@Tim Достаточно честный, тогда я рекомендую Александру посмотреть на решение в этом ответе и изменить его по мере необходимости. Http://stackoverflow.com/questions/1113840/php-remove-url-from-string – alexn

ответ

1

вы можете создать HTML-ссылки, вызывая следующую функцию в PHP:

$stringToCheck = 'http://www.google.com, or www.google.com'; 
$stringWithHTMLLinks = ''; 

$stringWithHTMLLinks = preg_replace('/\b((https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[A-Z0-9+&@#\/%=~_|]/si', '<a href="\0">\0</a>', $stringToCheck); 
+0

спасибо :) Я попробую это – Alexander

+0

h * ttp: //www.google.com работает отлично, но www.google.com дает мне http: //localhost/migo2/www.google. com на localhost – Alexander

0

Используйте это регулярное выражение, указанное на Daring Fireball, для соответствия URL-адресу.

+0

Я буду уверен чтобы проверить это :) – Alexander

+0

Вот полная версия (IT LONG): '(? i) \ b ((?: [az] [\ w -] +: (?:/{1,3} | [ а-z0-9%]) | WWW \ д {0,3} [] | [а-z0-9 \ -] + [] [AZ] {2,4} /) (:...? [^ \ s() <>] + | \ (([^ \ s() <>] + | (\ ([^ \ s() <>] + \))) * \)) + (: \ (? ([^ \ s() <>] + | (\ ([^ \ s() <>] + \))) * \) |! [^ \ s'() \ [\] {} ;:» «., <>?« »« »«]]) ' –

+0

Вот сокращенная версия (только соответствующие http-адреса):' (? I) \ b ((?: Https?: // | www \ d { 0,3} | [а-z0-9 \. -] + [AZ] {2,4} /) (?: [^ \ s() <>] + | \ (([[.] [.]^\ s() <>] + | (\ ([^ \ s() <>] + \))) * \)) + (?: \ (([^ \ s() <>] + | (\ ([^ \ s() <>] + \))) * \) | [!^\ s'() \ [\] {} ;: '».?, <>«»„“'])) ' –