Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставка двух точек в регулярном выражении для замены
 
 автор: pautina   (19.02.2012 в 15:09)   письмо автору
 
 

Здравствуйте.
Как в этом коде перед адресом изображения поставить две точки

$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $catagory['Field 3']); // Замена адреса изображения в строке  
     // <img height="547" src="/lessons/les1677/1.jpg" width="450" /> менняется на   
     // <img height="547" src="/images/lessons/les1677/1.jpg" width="450" /> 

Нужно чтобы замена шла на <img height="547" src="../images/lessons/les1677/1.jpg" width="450" />
пробовал '$1.".."./images/lessons/' точки не поставились?

  Ответить  
 
 автор: ladan   (19.02.2012 в 22:32)   письмо автору
 
   для: pautina   (19.02.2012 в 15:09)
 


<?
$a 
"<img height=\"547\" src=\"/lessons/les1677/1.jpg\" width=\"450\" />";

echo 
preg_replace("/(<img.+)src=\"(.+)\"(.+\/?>)/is","$1src=\"../images$2\"$3",$a);
?>

  Ответить  
 
 автор: pautina   (20.02.2012 в 06:19)   письмо автору
 
   для: ladan   (19.02.2012 в 22:32)
 

изменил ваш участок под свой скрипт
$newField_3 = preg_replace("/(<img.+)src=\"(.+)\"(.+\/?>)/is","$1src=\"../images$2\"$3", $catagory['Field 3']);

точки перед image после замены не ставятся
в содержимом ячейки html код содержит рисунки типа
<IMG height=319 src="/lessons/les1689/04.jpg" width=450>

эти рисунки нужно менять на
<IMG height=319 src="..images/lessons/les1689/04.jpg" width=450>

Как подредактировать код чтобы шла замена?

  Ответить  
 
 автор: ladan   (20.02.2012 в 10:59)   письмо автору
 
   для: pautina   (20.02.2012 в 06:19)
 


<?
$catagory
['Field 3'] = "<IMG height=319 src=\"/lessons/les1689/04.jpg\" width=450>"

echo 
preg_replace("/(<img.+)src=\"(.+)\"(.+\/?>)/is","$1src=\"..images$2\"$3",$catagory['Field 3']); //<IMG height=319 src="..images/lessons/les1689/04.jpg" width=450> 

?>

у меня все работает!

  Ответить  
 
 автор: pautina   (20.02.2012 в 11:36)   письмо автору
 
   для: ladan   (20.02.2012 в 10:59)
 

участок кода рабочий, но уменя исходные адреса рисунков не
<IMG height=319 src=\"/lessons/les1689/04.jpg\" width=450>

а
<IMG height=319 src="/lessons/les1689/04.jpg" width=450>

без этого обратного слеша,
как изменить код

<?php

$catagory
['Field 3'] = "<IMG height=319 src=\"/lessons/les1689/04.jpg\" width=450>";  

echo 
preg_replace("/(<img.+)src=\"(.+)\"(.+\/?>)/is","$1src=\"..images$2\"$3",$catagory['Field 3']); //<IMG height=319 src="..images/lessons/les1689/04.jpg" width=450> 

?>

  Ответить  
 
 автор: ladan   (20.02.2012 в 11:51)   письмо автору
 
   для: pautina   (20.02.2012 в 11:36)
 


<?
Занес в базу эту картинку 
<IMG height=319 src="/lessons/les1689/04.jpg" width=450>

и вывелобратов через регуляркуполучил:
<
IMG height=319 src="..images/lessons/les1689/04.jpg" width=450>


?>


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

  Ответить  
 
 автор: pautina   (20.02.2012 в 12:07)   письмо автору
 
   для: ladan   (20.02.2012 в 11:51)
 

как правильно записать замену для участка кода, а не одного рисунка

<?php
 
$catagory
['Field 3'] = '<P align=center><IMG height=308 src="/lessons/les1689/16.jpg" width=450></P>
<P>Деформируем этот слой с помощью <STRONG>Warp</STRONG> (Деформация) по форме окружности:</P>
<P align=center><IMG height=397 src="/lessons/les1689/17.jpg" width=450></P>
<P>Как вы видите, теперь мы имеем световое пятно:</P>
<P align=center><IMG height=259 src="/lessons/les1689/18.jpg" width=450></P>
<P>Дублируем (CTRL+J) этот слой несколько раз, чтобы усилить эффект:</P>
<P align=center><IMG height=295 src="/lessons/les1689/19.jpg" width=450></P>'
;  

echo 
preg_replace("/(<img.+)src=\"(.+)\"(.+\/?>)/is","$1src=\"..images$2\"$3",$catagory['Field 3']); //<IMG height=319 src="..images/lessons/les1689/04.jpg" width=450> 

?>

по коду меняется адрес только последнего рисунка, а нужна замена для всех.

  Ответить  
 
 автор: pautina   (20.02.2012 в 15:12)   письмо автору
 
   для: pautina   (20.02.2012 в 12:07)
 

Спасибо Вам за поддержку
нужно было использовать эту замену
 $newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i','$1../images/lessons/',$catagory['Field 3']);

  Ответить  
 
 автор: ladan   (20.02.2012 в 19:09)   письмо автору
 
   для: pautina   (20.02.2012 в 12:07)
 

убирается s в регулярке и будет как вам нужно

"/(<img.+)src=\"(.+)\"(.+\/?>)/i"

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования