,
Tüm 'nin sarın alt özniteliği almak ve bir

içine ekleyin

4 Cevap php

Bazı php sunucu tarafı büyü ile this jquery code olarak değiştirin çalışılıyor:

$(document).ready(function() {
    $('#text img').each(function(){ 
    	source = $(this).attr('src');
    	$(this).wrap($('<div class="caption '+ $(this).attr('class') + '"></div>')).removeAttr('class').removeAttr('height').removeAttr('width');
    	$(this).after('<p>' + $(this).attr('alt') + '</p>');
    	$(this).attr('src', '/system/tools/phpthumb/phpThumb.php?src=' + source + '&wl=200&hp=200&q=85&f=jpg');
    });
});

Bütün yaptığı bu almaktır:

<img class="right" src="blah.jpg" alt="My caption" width="100" height="200" />

Ve ile değiştirir:

<div class="caption right">
    <img src="/system/tools/phpthumb/phpThumb.php?src=blah.jpg&wl=200&hp=200&q=85&f=jpg" alt="My caption" />
    <p>My caption</p>
</div>

Görüntüler <p> 's arasında tekstil format html bir blok dağılmış. Böyle bir şey:

<p>My paragraph text</p>
<img src="image.jpg" />
<p>Another paragraph text <img src="another_image.jpg" /> with more text</p>
<p>And so on</p>

Bu, sağ veya merkez sol ve küçük otomatik phpThumb kullanılarak oluşturulan görüntü dalgalanmaya olanak sağlar. Ben normal ifadeler kullanmak gerekir diye tahmin ediyorum. Ben php için yeni ve sadece arayüzü kodlama biliyorum. Bunu nasıl saldıracak?

4 Cevap

Bu kullanarak sona erdi:

<?php
$string = '{body}';
$documentSource = mb_substr($string,3,-4);

$doc = new DOMDocument();
$doc->loadHTML($documentSource);
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//html/body/img') as $node) {
    $node->removeAttribute('height');
    $node->removeAttribute('width');
    $source = $node->getAttribute('src');

    $node->setAttribute('src', '/system/tools/phpthumb/phpThumb.php?src=' . $source . '&wl=200&hp=200&q=85&f=jpg');

    $pElem = $doc->createElement('p', $node->getAttribute('alt'));

    $divElem = $doc->createElement('div');
    $divElem->setAttribute('class', 'caption '.$node->getAttribute('class'));
    $node->removeAttribute('class');

    $divElem->appendChild($node->cloneNode(true));
    $divElem->appendChild($pElem);
    $node->parentNode->replaceChild($divElem, $node);

}
?>

Ben böyle DOMDocument gibi bir ayrıştırıcı kullanmanızı öneririz. Ile ek olarak DOMXPath Eğer jQuery kodunu tek neredeyse tek çevirebilir:

$documentSource = '<div id="text"><img class="right" src="blah.jpg" alt="My caption" width="100" height="200" /></div>';
$doc = new DOMDocument();
$doc->loadHTML($documentSource);
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//html/body/*[@id="text"]/img') as $node) {
    // source = $(this).attr('src');
    $source = $node->getAttribute('src');

    // $(this).after('<p>' + $(this).attr('alt') + '</p>');
    $pElem = $doc->createElement('p', $node->getAttribute('alt'));

    // $('<div class="caption '+ $(this).attr('class') + '"></div>')
    $divElem = $doc->createElement('div');
    $divElem->setAttribute('class', 'caption '.$node->getAttribute('class'));

    // $(this).wrap( … );
    $divElem->appendChild($node->cloneNode(true));
    $divElem->appendChild($pElem);
    $node->parentNode->replaceChild($divElem, $node);

    // $(this).removeAttr('class').removeAttr('height').removeAttr('width');
    $node->removeAttribute('class');
    $node->removeAttribute('height');
    $node->removeAttribute('width');

    // $(this).attr('src', '/system/tools/phpthumb/phpThumb.php?src=' + source + '&wl=200&hp=200&q=85&f=jpg');
    $node->setAttribute('src', '/system/tools/phpthumb/phpThumb.php?src=' . $source . '&wl=200&hp=200&q=85&f=jpg');
}
echo $doc->saveXML();

Bazı tamamen denenmemiş kodu:

preg_match('|<img class="([a-z\ ]+)" src="([a-z\ ]+)" alt="([a-z\ ]+)" />|i', 'PUT THE EXISTING HTML HERE', $matches);

echo <<<EOT
<span class="{$matches[0]}">
  <img src="{$matches[1]}" />
<p>{$matches[2]}</p>
</span>
EOT; #this should be at the start of line

İlgilendiği olsa, niye çıktı ilk etapta doğru html olamaz mı? Regex motoru yüklüyor külfetinden değil!

Ben doğal olarak PHP içinde mimiklerini jQuerys yetenekleri onun DOM uzantılarını kullanarak bir PHP kütüphanede ilginizi çekebilir düşünüyorum.

Proje denir PHPQuery - http://code.google.com/p/phpquery/

Kolayca PEAR ile monte edilebilir ve kullanım jQuery dizimi ile benzerdir