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

Форум PHP

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

 

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

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

тема: Добавить Тег перед и после img
 
 автор: Intendant   (27.07.2010 в 12:11)   письмо автору
 
 

Такая ситуация в тексте есть

 $text  = "<td> 
  <img src="https://site/accounts/msh.gif"     alt="История веб-поиска"> 
  </td> 
  <td style="font-size:83%"> ";


Нужно сделать так



<td> 
  <div><img src="https://site/accounts/msh.gif"     alt="История веб-поиска"> </div>
  </td> 
  <td style="font-size:83%">



Тег <div> будет без класса и id
<img ..... > может быть и с id и class

Смысл должен быть такой после обработки
<div> <img ..... ></div>

  Ответить  
 
 автор: Лена   (27.07.2010 в 12:15)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:11)
 

str_replace()

  Ответить  
 
 автор: sim5   (27.07.2010 в 12:36)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:11)
 

А без div никак не обойтись в вашем случае?

  Ответить  
 
 автор: Intendant   (27.07.2010 в 12:41)   письмо автору
 
   для: sim5   (27.07.2010 в 12:36)
 

Можно <span>

  Ответить  
 
 автор: sim5   (27.07.2010 в 12:42)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:41)
 

Зачем?

  Ответить  
 
 автор: mihdan   (27.07.2010 в 12:45)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:41)
 

Можно: a, abbr, ..., b, ..., cite, ..., xmp - только вот зачем?

  Ответить  
 
 автор: nikita2206   (27.07.2010 в 14:29)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:41)
 

Почитайте про css-селекторы. Если совсем уж никак - то про регулярные выражения.

  Ответить  
 
 автор: mihdan   (27.07.2010 в 12:41)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:11)
 

Зачем вам впрапить IMG в DIV, нельзя для этих целей использовать TD?

  Ответить  
 
 автор: Intendant   (27.07.2010 в 12:46)   письмо автору
 
   для: mihdan   (27.07.2010 в 12:41)
 

Хочу прикрепить к стилям через div img { border:}
А каждому изображению не пропишешь

  Ответить  
 
 автор: mihdan   (27.07.2010 в 12:50)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:46)
 


TD IMG {border: 1px solid red;}

не тоже самое?

А если таблице задать класс - еще проще:


<table class="classname">



table.classname td img {border: 1px solid red;}

  Ответить  
 
 автор: Intendant   (27.07.2010 в 12:53)   письмо автору
 
   для: mihdan   (27.07.2010 в 12:50)
 

td вообще для примера там пожет быть и спам и div и еще чтото.

  Ответить  
 
 автор: mihdan   (27.07.2010 в 13:06)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:46)
 

>А каждому изображению не пропишешь
Так если вы тупо замените IMG на DIV IMG - это разве не приведет к замене всех IMG.
Сформулируйте задачу, что вы хотите и зачем вы это делаете?

  Ответить  
 
 автор: sim5   (27.07.2010 в 13:45)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:46)
 

Ага, а значит DIV прописать каждому можно?
img { border:} - это значит не для каждого изображения?
Ужас, никак не иначе!

  Ответить  
 
 автор: sms-send   (27.07.2010 в 13:03)   письмо автору
 
   для: Intendant   (27.07.2010 в 12:11)
 

<?php

$text  
'<td>  
  <img src="https://site/accounts/msh.gif"     alt="История веб-поиска">  
  </td>  
  <td style="font-size:83%"> '
;
$beforeText '<div>';
$afterText '</div>';


Дальше можно так:
// <?
$curPos 
0;
while(
false !== $imgTagStartPos stripos($text'<img'$curPos))
{
    if(!
ctype_space($text[$imgTagStartPos 4]))
    {
        
$curPos += $imgTagStartPos 4;
        continue;
    }
    
$imgTagEndPos stripos($text'>'$imgTagStartPos 5);
    if(
false === $imgTagEndPos)
        break;
    
$imgTagLen $imgTagEndPos $imgTagStartPos;
    
$imgTag substr($text$imgTagStartPos$imgTagLen);
    
$text substr_replace($text"{$beforeText}{$imgTag}{$afterText}"$imgTagStartPos$imgTagLen);
    
$curPos $imgTagEndPos strlen($beforeText) + strlen($afterText);
}

Или так:
// <?
$text 
preg_replace('~<img\\s[^>]*>~i'"{$beforeText}\\0{$afterText}"$text);

  Ответить  
 
 автор: Intendant   (27.07.2010 в 13:07)   письмо автору
 
   для: sms-send   (27.07.2010 в 13:03)
 

Большое спасибо, sms-send. Я уже все надежды потерял=)

  Ответить  
 
 автор: sms-send   (27.07.2010 в 13:11)   письмо автору
 
   для: Intendant   (27.07.2010 в 13:07)
 

Всё таки надо разобраться, а надо ли так делать... разве стиль border нельзя прописать самому тегу img? Почему граница должна быть именно у родительского тега?

img {border: 1px solid;}

  Ответить  
 
 автор: mihdan   (27.07.2010 в 13:16)   письмо автору
 
   для: sms-send   (27.07.2010 в 13:11)
 

>Всё таки надо разобраться, а надо ли так делать... разве стиль border нельзя прописать самому тегу img? Почему граница должна быть именно у родительского тега?

Даже не стиль, а правильнее класс

  Ответить  
 
 автор: sms-send   (27.07.2010 в 13:25)   письмо автору
 
   для: mihdan   (27.07.2010 в 13:16)
 

Может не правильно выразился, но я имел в виду само применение css-свойства border без привязки к способу применения css-правила.

  Ответить  
 
 автор: nikita2206   (27.07.2010 в 14:38)   письмо автору
 
   для: sms-send   (27.07.2010 в 13:03)
 

Феерично. Прямиком на ГК

  Ответить  
 
 автор: sms-send   (27.07.2010 в 14:45)   письмо автору
 
   для: nikita2206   (27.07.2010 в 14:38)
 

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

  Ответить  
 
 автор: nikita2206   (27.07.2010 в 14:47)   письмо автору
 
   для: sms-send   (27.07.2010 в 14:45)
 

Ну тогда извиняйте. Что ж это за люди такие

  Ответить  
 
 автор: Intendant   (27.07.2010 в 16:50)   письмо автору
 
   для: nikita2206   (27.07.2010 в 14:47)
 

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

  Ответить  
 
 автор: sim5   (27.07.2010 в 17:26)   письмо автору
 
   для: Intendant   (27.07.2010 в 16:50)
 

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

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

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