[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена адреса изображения
devis
Доброго дня!
Подскажите как заменить мне адрес картинки.

есть переменная
$post='какой то текст <img src="http://сайт.ру/1/2/3/4/5/6/7/a/g/изображение.jpg" alt="текст" title="текст"> какой то текст';
как мне сделать что бы было
$post='какой то текст <img src="http://мой сайт.ру/папка 1/папка 2/папка 3/изображение.jpg" alt="текст" title="текст"> какой то текст';
попробывал такое
$post = preg_replace("/(.*src=).*([a-z0-9_-]+\.[a-z0-9])(.*\>)/iU",'\1"http://мой сайт.ру/2012/03/07/\2\3',$post);
меняет но вот так
$post='какой то текст <img src="http://мой сайт.ру/папка 1/папка 2/папка 3/сайт.ру/1/2/3/4/5/6/7/
a/g/изображение.jpg" alt="текст" title="текст"> какой то текст'
;




Спустя 44 минуты, 42 секунды (8.03.2012 - 09:59) kenscl12 написал(а):
ты хочешь чтоб в тексте была замена 1/2/3/4/5 на папка1/папка2 и тд ? или что?

Спустя 8 минут, 7 секунд (8.03.2012 - 10:07) devis написал(а):
ну не конкретно именно эти символы а любой адрес менялся на мой но файл оставался без изменений папки могут быть разные
А так вы верно подумали

Спустя 17 минут, 58 секунд (8.03.2012 - 10:25) kenscl12 написал(а):

$pattern = '#'
.preg_quote('http://').
'.*'.
preg_quote('.jpg').
'#iu';

$post = preg_replace($pattern ,'здесь пишешь втупую текст на который меняешь',$post);

Спустя 10 минут, 25 секунд (8.03.2012 - 10:36) devis написал(а):
Меняет но только таким образом :)
$post='какой то текст <img src="http://мой сайт.ру/папка 1/папка 2/папка 3/" alt="текст" title="текст"> какой то текст';
короче говоря не подставляет сам файл
И вопрос такой если у меня изображение не .jpg а bmp, gif и т.д.
preg_quote('.|jpg|gif|bmp|').
будет работать?

Спустя 16 минут, 11 секунд (8.03.2012 - 10:52) kenscl12 написал(а):
мы паттерном находим участок который заменить. после паттерна записывается то на что меняем.


preg_quote('.jpg|.gif|.bmp').

вполне должно работать

Спустя 2 минуты, 10 секунд (8.03.2012 - 10:54) devis написал(а):
Ну правильно мы находим полную ссылку на файл вместе с именем файла...
А файлы то разные по идее как то должен файл оставаться а он почему то сносится.

Спустя 6 минут, 26 секунд (8.03.2012 - 11:00) kenscl12 написал(а):
ааа файл оставаться... тогда

$pattern = '#'
.preg_quote('http://').
'.*'.
preg_quote('/') . '[a-zа-я]*'.
preg_quote('.jpg').
'#ius';


только что таким вариантом попробовал . поменялся адрес сайта без проблем







<?php
error_reporting(E_ALL);
header('Content-Type: text/html; charset=utf-8');
$post='какой то текст
<img src="http://сайт.ру/1/2/3/4/5/6/7/a/g/изображение.jpg" alt="текст" title="текст"> какой то текст'
;

$pattern = '#'
.preg_quote('http://').
'.*'.
preg_quote('/') . '[a-zа-я]*'.
preg_quote('.jpg').
'#ius';
$post = preg_replace($pattern ,'http://сайтуууууу.ру/1/2/3/4/5/6/7/a/g/изображение.jpg',$post);
echo htmlspecialchars($post);
?>

работает все

Спустя 3 минуты, 35 секунд (8.03.2012 - 11:04) devis написал(а):
а если кодировка win-1251? мож поэтому не меняет норм?

Спустя 3 минуты, 2 секунды (8.03.2012 - 11:07) kenscl12 написал(а):
думаю что регулярные выражения созданы и для кодировки 1251, посл вариант котор я кинул , он не меняет что ли у тебя?

если совсем заморочиться то

$post = ($pattern , на что меняем, iconv('windows-1251','utf-8',$post));

Спустя 53 секунды (8.03.2012 - 11:08) devis написал(а):
почему то просто пустую выдает я ее сразу в скрипт делаю

Спустя 2 минуты, 1 секунда (8.03.2012 - 11:10) kenscl12 написал(а):
скинь мне кусок кода

Спустя 5 минут, 59 секунд (8.03.2012 - 11:16) devis написал(а):
_http://skuchnyh.net/addnew.zip вот сам файл

Спустя 13 минут, 53 секунды (8.03.2012 - 11:30) kenscl12 написал(а):
короче там капец у тя кода, не буду вникать. должно все меняться

Спустя 5 минут, 20 секунд (8.03.2012 - 11:35) kenscl12 написал(а):
можешь вот так еще попробовать

$pattern = '#'
.preg_quote('http://').
'(.*'.
preg_quote('/') . ')[a-zа-я]*'.
preg_quote('.jpg').
'#ius';
$count = preg_match_all($pattern, $post, $matches);

$post = preg_replace('#'.$matches[1][0].'#iu' ,'сайтуууууу.ру/1/2/3/4/5/6/7/a/g/',$post);

но там где у меня сайтууу и прочее написано в реплейсе, там вводишь путь в формате site.com/gfdgd/gdfgdf/gfdgfd без хттп и без имени файла и последнего слэша

Спустя 20 минут, 50 секунд (8.03.2012 - 11:56) devis написал(а):
если я делаю по такому варианту тут ваще писец получается просто тупо текстом выводит 6 раз
мой сайт.ру/папка 1/папка 2/папка 3мой сайт.ру/папка 1/папка 2/папка 3мой сайт.ру/папка 1/папка 2/папка 3
мой сайт.ру/папка 1/папка 2/папка 3мой сайт.ру/папка 1/папка 2/папка 3мой сайт.ру/папка 1/папка 2/папка 3

Спустя 4 минуты, 45 секунд (8.03.2012 - 12:01) kenscl12 написал(а):
ну регулярка тут не причем, может там цикл у тебя гдето какойто или еще че

я толком не всматривался но пришла мысль, попробуй добавить жадный поиск и убрать u (u = кодировка utf-8, может кст поэтому косяк), т.е. #iu поменять на iU

Спустя 23 минуты, 25 секунд (8.03.2012 - 12:24) devis написал(а):
не хочет user posted image

Спустя 10 минут, 8 секунд (8.03.2012 - 12:34) kenscl12 написал(а):
тогда понятия не имею:)

Спустя 20 минут, 41 секунда (8.03.2012 - 12:55) devis написал(а):
Блин чтож за фигня это уже 3 форум где нет ответа sad.gif

Спустя 15 минут, 44 секунды (8.03.2012 - 13:11) Visman написал(а):
Примеры покажи, несколько, на преобразование адресов.

Спустя 2 минуты, 48 секунд (8.03.2012 - 13:13) devis написал(а):
В смысле чем я преобразовываю?
$post = preg_replace("/(.*src=).*([a-z0-9_-]+\.[a-z0-9])(.*\>)/iU",'\1"http://мой сайт.ру/2012/03/07/\2\3',$post);
    $post=preg_replace('#src="http://.+/([^"]+)"#ius', 'src="http://мой сайт.ру/2012/03/07/$1"',$post);
$pattern = '#'
.preg_quote('http://').
'(.*'.
preg_quote('/') . ')[a-zа-я]*'.
preg_quote('.jpg').
'#ius';
$count = preg_match_all($pattern, $post, $matches);

$post = preg_replace('#'.$matches[1][0].'#iu' ,'сайтуууууу.ру/1/2/3/4/5/6/7/a/g/',$post);
$pattern = '#'
.preg_quote('http://').
'.*'.
preg_quote('.jpg').
'#iu';

$post = preg_replace($pattern ,'здесь пишешь втупую текст на который меняешь',$post);

Переменная $post содержит текст с картинками картинок может быть 2-5

Максимально который делает преобразование это последний код но он не подсатавляет сам файл и если в тексте 2-3 картинки он первую преобразует а остальные просто удаляет

Спустя 5 минут, 1 секунда (8.03.2012 - 13:18) Visman написал(а):
Пример адресов, которые есть и что из них должно получиться после преобразования.

Спустя 2 минуты, 36 секунд (8.03.2012 - 13:21) devis написал(а):
Цитата
есть переменная

$post='какой то текст <img src="http://сайт.ру/1/2/3/4/5/6/7/a/g/изображение.jpg" alt="текст" title="текст"> какой то текст';


как мне сделать что бы было

$post='какой то текст <img src="http://мой сайт.ру/папка 1/папка 2/папка 3/изображение.jpg" alt="текст" title="текст"> какой то текст';


попробывал такое

$post = preg_replace("/(.*src=).*([a-z0-9_-]+\.[a-z0-9])(.*\>)/iU",'\1"http://мой сайт.ру/2012/03/07/\2\3',$post);


меняет но вот так

$post='какой то текст <img src="http://мой сайт.ру/папка 1/папка 2/папка 3/сайт.ру/1/2/3/4/5/6/7/
a/g/изображение.jpg" alt="текст" title="текст"> какой то текст'
;

Спустя 6 минут, 1 секунда (8.03.2012 - 13:27) Visman написал(а):
devis, этого мало для написания преобразования, т.к. всего один пример. И то взятый от фонаря, а не с конкретного адреса.

Спустя 5 минут, 59 секунд (8.03.2012 - 13:33) devis написал(а):
ок
Вот
_http://im.sku.ru/5/t/2/4/d/d75911178224fce135c2242472a.jpg
из нее надо получить
_http://moisait.ru/papka1/papka2/papka3/d75911178224fce135c2242472a.jpg

По идее мне нужно подчеркнутое вырезать и вставить туда свое и не важно сколько примеров ссылок

Спустя 26 минут, 13 секунд (8.03.2012 - 13:59) Visman написал(а):
$test = preg_replace("#(http://im\.sku\.ru[^\"]+/)([^\"/]+\.)(jpe?g|gif|png)#isU", "http://moisait.ru/papka1/papka2/papka3/$2$3", $test);


up Модификатор U добавил.

Спустя 1 час, 41 минута, 45 секунд (8.03.2012 - 15:41) devis написал(а):
Фух....
Короче методом проб и ошибок получилось у меня с этой заменой!!!!!!!!!!! user posted image
Вобщем вот что получилось спс Visman за мысль
Вот код!!!!
$post = preg_replace("#(http://[^\"]+/)([^\"/]+\.)(jpe?g|gif|png|bmp)#iU", "http://мойсайт.ру/папка1/папка2/папка3/$2$3", $post);
Отдельное спасибо kenscl12 за выдержку :)

Спустя 1 день, 18 часов, 52 минуты, 21 секунда (10.03.2012 - 10:33) devis написал(а):
А подскажите плизз как или где почитать про загрузку картинок по URL на свой сервер
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.