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

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

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

 

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

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

тема: изменение всех тегов
 
 автор: TavRoX   (14.08.2012 в 01:09)   письмо автору
 
 

ребят помогите плиз с такой проблемой
вообщем в переменной может быть текст с тегами картинок
<img title="заголовок" src="image.jpg" alt="заголовок" width="220" height="147" />
текст балабалаба 
<img title="заголовок2" src="image2.jpg" alt="заголовок2" width="220" height="147" />блабала ...

как сделать что бы в тексте все картинки поменяло с таког овида как выше
на такой как ниже
<a href="image.jpg" rel="single"  class="pirobox" title="заголовок">
<img src="image.jpg" alt="заголовок"  width="220" height="147" /></a>
балалбалалбалал. ... балалбалаа
<a href="image2.jpg" rel="single"  class="pirobox" title="заголовок2">
<img src="image2.jpg"  width="220" height="147" /></a>
блаблабла....

  Ответить  
 
 автор: cheops   (14.08.2012 в 05:52)   письмо автору
 
   для: TavRoX   (14.08.2012 в 01:09)
 

Лучше сразу ориентироваться на функцию preg_replace_callback(). Искать по выражению <img[^>]+>, а в функции обратного вызова уже препарировать полученный img-тэг и формировать замену (можно при помощи новых регулярных выражений).

  Ответить  
 
 автор: TavRoX   (14.08.2012 в 23:32)   письмо автору
 
   для: cheops   (14.08.2012 в 05:52)
 

это для меня взрыв мозга(

  Ответить  
 
 автор: Sfinks   (16.08.2012 в 21:29)   письмо автору
 
   для: TavRoX   (14.08.2012 в 01:09)
 

Поробуйте так:
<?php
  $s 
'<img title="заголовок" src="image.jpg" alt="заголовок" width="220" height="147" /> 
        текст балабалаба  
        <img title="заголовок2" src="image2.jpg" alt="заголовок2" width="220" height="147" />блабала ...'
;
  
$pattern '#<img.*?title="([^"]+).*?src="([^"]+)([^>]+>)#si';
  
$replace "<a href=\"$2\" rel=\"single\" class=\"pirobox\" title=\"$1\"><img src=\"$2$3</a>";
  
$s preg_replace($pattern,$replace,$s);
  echo 
$s;
?>

P.S. Умер винт с апачем, поэтому проверить не на чем. Пишу из головы.

  Ответить  
 
 автор: TavRoX   (17.08.2012 в 00:11)   письмо автору
 
   для: Sfinks   (16.08.2012 в 21:29)
 

спасибо, на днях проверю. сейчас не дома(

  Ответить  
 
 автор: TavRoX   (17.08.2012 в 00:23)   письмо автору
 
   для: Sfinks   (16.08.2012 в 21:29)
 

аааааааааааа дружище спасибо большое

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

function fix_flash() {
    // loop through every embed tag on the site
    var embeds = document.getElementsByTagName('embed');
    for(i=0; i<embeds.length; i++)  {
        embed = embeds[i];
        var new_embed;
        // everything but Firefox & Konqueror
        if(embed.outerHTML) {
            var html = embed.outerHTML;
            // replace an existing wmode parameter
            if(html.match(/wmode\s*=\s*('|")[a-zA-Z]+('|")/i))
                new_embed = html.replace(/wmode\s*=\s*('|")window('|")/i,"wmode='opaque'");
            // add a new wmode parameter
            else 
                new_embed = html.replace(/<embed\s/i,"<embed wmode='opaque' ");
            // replace the old embed object with the fixed version
            embed.insertAdjacentHTML('beforeBegin',new_embed);
            embed.parentNode.removeChild(embed);
        } else {
            // cloneNode is buggy in some versions of Safari & Opera, but works fine in FF
            new_embed = embed.cloneNode(true);
            if(!new_embed.getAttribute('wmode') || new_embed.getAttribute('wmode').toLowerCase()=='window')
                new_embed.setAttribute('wmode','opaque');
            embed.parentNode.replaceChild(new_embed,embed);
        }
    }
    // loop through every object tag on the site
    var elementToAppend = document.createElement('param');
    elementToAppend.setAttribute('name', 'wmode');
    elementToAppend.setAttribute('value', 'opaque');
    var objects = document.getElementsByTagName('object');
    for (var i = 0; i < objects.length; i++) {
        var newObject = objects[i].cloneNode(true);
        elementToAppend = elementToAppend.cloneNode(true);
        newObject.appendChild(elementToAppend);
        objects[i].parentNode.replaceChild(newObject, objects[i]);
    }
}
window.onload = fix_flash;

  Ответить  
 
 автор: Sfinks   (17.08.2012 в 01:33)   письмо автору
 
   для: TavRoX   (17.08.2012 в 00:23)
 

эт не ко мне.

  Ответить  
 
 автор: confirm   (17.08.2012 в 06:40)   письмо автору
 
   для: TavRoX   (17.08.2012 в 00:23)
 

РНР не занимается "всплывающими окошками над...", он вообще не имеет представления об окошках и прочем на странице.

  Ответить  
 
 автор: TavRoX   (18.08.2012 в 00:56)   письмо автору
 
   для: confirm   (17.08.2012 в 06:40)
 

пхп скриптом извенить в переменной код видео вставив нужные параметры и т.д.

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

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