Привет! Я разрабатываю собственный форум на своем сайте.Я хотел бы преобразовать URL-адреса, начинающиеся с: http://*.domain.com/photos/{username}/{photo_id} (я должен получить и имя пользователя, и photo_id) в тег прямого изображения, чтобы пользователь мог получить изображение вместо URL-адреса.
Это должно быть сделано, если онивставьте URL с или без bbcode: т.е.: http://domain.com/photos/musthafa/12345 [url = http://domain.com/photos/musthafa/12345]my ссылка на фотографию здесь [/ url] [url = http://domain.com/photos/musthafa/12345]http://domain.com/photos/musthafa/12345[/url]
Это должно бытьпреобразован в
Я пробовал это:
$str = "http://www.domain.com/photos/musthafa/12345" $str = preg_replace_callback("'\[url=http:\/\/www\.domain\.com\/photos\/(.*?)\](.*?)\[/url\]'i", 'self::parse_photo_url', $str); AND $str = preg_replace_callback("#^https?://([a-z0-9-]+\.)domain.com/photos/(.*?)$#", 'self::parse_gpp_photo', $str); function parse_photo_url($url){ { $full_url = "http://www.domain.com/" . $url[1]; $url_segs = parse_url($full_url); $path = explode("/", $url_segs['path']); return '<img src="http://www.domain.com/{path-to-the-gallery}/'.$path[2].'/jpg" />'; }
В основном я хотел бы извлечь идентификатор (12345 в этом примере), и мне нужно извлечь прямую ссылку на URL-адрес изображения, чтобы пользователь мог получить тег изображения вместо URL-адреса.
Вот почему я позвонил
preg_replace_callback function.
Проще говоря, я застрял в шаблоне регулярных выражений, чтобы соответствовать URL моего домена, начиная с:
http://domain.com/photos{username}/{id} OR http://www.domain.com/photos{username}/{id}"
Вам не нужно регулярное выражение.
function buildLink( $id, $name ){ $html = array(); $html[] = '<img alt="" src="http://www.domain.com/photos/'; $html[] = $name; $html[] = '/'; $html[] = $id; $html[] = '.jpg">'; return implode( '', $html ); } $path = 'http://www.domain.com/photos/musthafa/12345'; $path = rtrim( $path, ' /' ); $path_parts = explode( '/', $path ); $id = ( int ) array_pop( $path_parts ); $name = array_pop( $path_parts ); $img = buildLink( $id, $name ); echo $img;
Musthafa.
Я не уверен, что получил именно то, что вы хотите, но, пожалуйста, попробуйте это:
<?php $image_url_samples = array( "http://domain.com/photos/musthafa/12345", "[url=http://domain.com/photos/musthafa/12345]my photo link here[/url]", "[url=http://domain.com/photos/musthafa/12345]http://domain.com/photos/musthafa/12345[/url]" ); foreach ($image_url_samples as $image_url_sample) { $conversion_result = preg_replace("/^(http:\\/\\/domain.com\\/photos\\/\\w+\\/\\d+)$/i", "<img src=\"\\1.jpg\" alt=\"\\1\" />", $image_url_sample); $conversion_result = preg_replace("/^\\[url=(http:\\/\\/domain.com\\/photos\\/\\w+\\/\\d+)\\](.+)\\[\\/url\\]$/", "<img src=\"\\1.jpg\" alt=\"\\2\" />", $conversion_result); print $conversion_result . "<br />"; }
Вывод:
<img src="http://domain.com/photos/musthafa/12345.jpg" alt="http://domain.com/photos/musthafa/12345" /> <br /> <img src="http://domain.com/photos/musthafa/12345.jpg" alt="my photo link here" /> <br /> <img src="http://domain.com/photos/musthafa/12345.jpg" alt="http://domain.com/photos/musthafa/12345" /> <br />
Кстати, если вы хотите сделать свой URL нечувствительным к регистру, добавьте модификатор i в конец обычного шаблона ( Модификаторы PHP PHP ).
i