Görüntü bağlantısı için standart bir bağlantı dönüştürmek

4 Cevap php

Ben, bir resim etiketi içine normal bir bağlantı etiketini dönüştürmek istiyorum

Nasıl bu şu dönüştürmek istiyorsunuz,

<a href="images/first.jpg">This is an image.</a>

<a href="images/second.jpg">This is yet another image.</a>

<a href="images/third.jpg">Another image.</a>

Bu içine php ile,

<img src="dir/images/first.jpg">This is an image.

<img src="dir/images/second.jpg">This is yet another image.

<img src="dir/images/third.jpg">Another image.

Kaynak bağlantıları herhangi bir sayıda olabilir.

Teşekkürler.

4 Cevap

Regex kullanın:

    $text = preg_replace( '^<a href="(.+)">(.+)</a>^', '<img src="dir/$1">$2', $text );

Çıktı:

    <img src="dir/images/first.jpg">This is an image.

    <img src="dir/images/second.jpg">This is yet another image.

    <img src="dir/images/third.jpg">Another image.

Str_replace ile olmalıdır

$source = str_replace('<a href="images/', '<img src="dir/images/', $source);

ve

$source = str_replace('</a>', '', $source);

HTML-çözümleyici ile:

<?php

$content = '<a href="images/first.jpg">This is an image.</a>

<a href="images/second.jpg">This is yet another image.</a>

<a href="images/third.jpg">Another image.</a>';

$html = new DOMDocument();

$html->loadHTML($content);

$links = $html->getElementsByTagName('a');

$new_html = new DOMDocument();

foreach($links as $link) {
    $img = $new_html->createElement('img');
    $img->setAttribute('src', 'dir/'.$link->getAttribute('href'));
    $new_html->appendChild($img);
    $new_html->appendChild($new_html->createTextNode($link->nodeValue));
}


echo $new_html->saveHTML();

Beri <a> etiketleri iç içe olamaz, ve bunu belirli kenar durumlarda altında başarısız olması için hazırsanız, burada oldukça güvenli bir dereceye kadar normal ifadeleri kullanabilirsiniz.

$text = '<a href="images/first.jpg">This is an image.</a>
<a href="images/second.jpg">This is yet another image.</a>
<a href="images/third.jpg">Another image.</a>';

$text = preg_replace('#<a.+?href="([^"]+)".*?>(.+?)</a>#i', '<img src="dir/\1" alt="">\2', $text);
echo $text;

Bu verir:

<img src="dir/images/first.jpg" alt="">This is an image.
<img src="dir/images/second.jpg" alt="">This is yet another image.
<img src="dir/images/third.jpg" alt="">Another image.