Решением на стороне PHP может быть использование strpos и substr
для:
- найти положение персонажа
- и извлеките то, что приходит до / после.
Примерно так, например:
$str = 'mysite.com/mypicture.jpeg';
$position = strpos($str, '/');
if ($position !== false) {
$before = substr($str, 0, $position);
$after = substr($str, $position+1);
var_dump($before, $after);
}
Что даст вам:
string 'mysite.com' (length=10)
string 'mypicture.jpeg' (length=14)
Если вы знаете, что в ваших данных всегда будет один (и только один) слеш, вы также можете использовать explode и list :
list($before, $after) = explode('/', $str);
var_dump($before, $after);
Что даст вам тот же результат:
string 'mysite.com' (length=10)
string 'mypicture.jpeg' (length=14)
Другой идеей было бы сделать это на стороне SQL - хотя, если вам нужны оба поля, делать это на стороне PHP - неплохая идея (на самом деле обе стороны, PHP и SQL, допустимы) .
РЕДАКТИРОВАТЬ после комментариев.
Как насчет этого для вашей петли:
while($row = mysql_fetch_object($res)) {
$http_link = $row->link;
$position = strpos($http_link, '/');
if ($position !== false) {
$before = substr($http_link, 0, $position);
if(strstr($http_link, 'http') === FALSE) {
$http_link = 'http://'.$http_link;
$before = 'http://' . $before;
}
echo "<div id=\"banner\"><a href=\"{$before}\" target=\"_blank\"><img src=\"{$http_link}\" /></a></div>";
}
}
Для каждой строки вы получаете $row->link
для переменной $http_link
, как вы делали раньше.
Тогда:
- вы извлекаете часть, которая идет перед '/'; и использовать его для тега
a href
, для ссылки на корень сайта
- вы используете полный URL из БД, для тега
img src
, чтобы отобразить изображение
И вы не забудьте добавить «http://
», если необходимо, к обоим URL-адресам, как вы делали в первый раз, когда у вас был только один.
Примечание: этот код не тестируется, но должен дать вам подсказку о возможном решении.
Надеюсь, это поможет: -)