Ссылка или изображение preg / ereg заменить? - PullRequest
0 голосов
/ 06 июля 2011

Вот моя проблема. Я создаю сайт, где вы можете поделиться ссылками / фотографиями. Теперь вот что я хочу сделать. Если ссылка является ссылкой на сайт, отобразите такую ​​ссылку, как:

<a href="http://example.com" target="_blank">http://example.com</a>

Но вот мое падение, если это изображение (jpg, gif, png, ect), я хочу отобразить это на странице вместо ссылки. Как мне это сделать?

- Забыл добавить:

$profile_post_post = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $profile_post_post);

Это код, который делает ссылку.

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

Предполагается, что вы используете PHP, а URL хранится в $ url :

if (!preg_match("@^https?\:\/\/@", $url)
{
    $url = "http://$url";
}

if (preg_match("@\.(gif|jpe?g|png)$@", $url))
{
   echo '<img src="' . $url . '" />"';
}
else
{
   echo '<a href="' . $url . '" target="_blank">' . $url . </a>;
}

Это не точный метод, так как некоторые изображения могут быть поданы с правильным MIMEпечатать без указания расширений gif, jpeg, jpg или png.

Это гораздо лучший способ проверить, ссылается ли ссылка на изображение, но требует ли он времени и полосы пропускания.Таким образом, было бы лучше сохранить результат в базе данных в то же время, что и $ url, для последующего повторного использования:

if (!preg_match("@^https?\:\/\/@", $url)
{
    $url = "http://$url";
}

$headers = get_headers($url, 1);
$mime_type = isset($headers["Content-Type"])  ?  $headers["Content-Type"]  :  "";

if (preg_match("@\.(gif|jpe?g|png)$@", $url)  ||  preg_match("@^image\/@", $mime_type))
{
   $html = '<img src="' . $url . '" />"';
}
else
{
   $html = '<a href="' . $url . '" target="_blank">' . $url . '</a>';
}
0 голосов
/ 06 июля 2011

Используйте preg_replace_callback, предоставляя обратный вызов, который выбирает содержание ссылки условно на основе ее формата. то есть, если он заканчивается на .jpg, визуализируйте тег img. Если оно заканчивается чем-либо, кроме типичного расширения файла изображения, выведите его имя.

...