У меня есть этот PHP-чат.
Если бы я набрал ссылку в чате, он не отобразил бы ее как ссылку.
Как я могу использовать STR replace для этого?
Он должен отвечать на такие вещи, как «http» http: // '' .com '' .nl '' www '' www. ' ….
Мои другие линии замены STR выглядят так:
$bericht = str_replace ("STRING1","STRINGREPLACEMENT1",$bericht);
Кто то?
Привет! Попробуйте этот код (где-то на php.net):
function format_urldetect( $text ) { $tag = " rel=\"nofollow\""; // // First, look for strings beginning with http:// that AREN't preceded by an <a href tag // $text = preg_replace( "/(?<!<a href=(\"|'))((http|ftp|http)+(s)?:\/\/[^<>\s]+[\w])/i", "<a target=\"_new\" class=\"httplink\" href=\"\\0\"" . $tag . ">\\0</a>", $text ); // // Second, look for strings with casual urls (www.something.com...) and make sure they don't have a href tag OR a http:// in front, // since that would have been caught in the previous step. // $text = preg_replace( "/(?<!<a href=(\"|')http:\/\/)(?<!http:\/\/)((www)\.[^<>\s]+[\w])/i", "<a target=\"_new\" class=\"httplink\" href=\"http://\\0\"" . $tag . ">\\0</a>", $te xt ); $text = preg_replace( "/(?<!<a href=(\"|')https:\/\/)(?<!http:\/\/)((www)\.[^<>\s]+[\w])/i", "<a target=\"_new\" class=\"httplink\" href=\"http://\\0\"" . $tag . ">\\0</a>", $t ext ); return $text; }
Ух, сломанный отступ. попробуйте этот http://triop.se/code.txt
Вместо этого вы должны использовать регулярное выражение. посмотреть на preg_replace
$regex = '`(\s|\A)(http|https|ftp|ftps)://(.*?)(\s|\n|[,.?!](\s|\n)|$)`ism'; $replace = '$1<a href="$2://$3" target="_blank">$2://$3</a>$4' $buffer = preg_replace($regex,$replace,$buffer);