2015-01-22 4 views
0

У меня есть URL-адрес, который поступает из базы данных следующим образом.Как очистить URL-адрес, поступающий из базы данных в PHP?

http://34.158.85.145/file/pic/user/2014/11/d424bc46529b9f8d764b6b485e6c8716%s.png 

Теперь, если вы внимательно посмотрите на изображение, некоторые специальные символы встают в его имя. Я хочу избежать этого, поэтому я написал для него следующую логику, но это не сработало.

$user_image = Slug('http://34.158.85.145/file/pic/user/2014/11/d424bc46529b9f8d764b6b485e6c8716%s.png'); 

function Slug($string) { 
    return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-')); 
    } 

Может кто-нибудь, пожалуйста, помогите мне в очистке этого изображения от имени на PHP?

Заранее спасибо.

+0

Что должно быть имя файла, все, что я могу видеть добавил это «% s» в конце имени файла, что не является чем-то, что я ожидаю увидеть добавленным в имя файла. Его больше похоже на спецификатор формата, который не передан в sprintf() –

+0

. Думаю, ваша главная проблема - не допустить, чтобы эти имена были вставлены в db на первом месте. –

ответ

1

Если вы просто хотите, чтобы удалить все специальные символы («» за исключением) от имени файла в URL можно просто использовать что-то вроде этого:

<?php 
$url = 'http://34.158.85.145/file/pic/user/2014/11/d424bc46529b9f8d764b6b485e6c8716%s.png'; 
$exp= explode('/', $url); 
$image = array_pop($exp); 
$replace = preg_replace('/[^A-Za-z0-9.\-]/', '', $image); 
$url = str_replace($image, $replace, $url); 
var_dump($url); 
Смежные вопросы