我想将普通的链接标记转换为图像标记,
我将如何转换以下内容,
<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>
使用php进入这个,
<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.
源中可以有任意数量的链接。
感谢。
答案 0 :(得分:1)
使用str_replace时,它应该是
$source = str_replace('<a href="images/', '<img src="dir/images/', $source);
和
$source = str_replace('</a>', '', $source);
答案 1 :(得分:1)
使用正则表达式:
$text = preg_replace( '^<a href="(.+)">(.+)</a>^', '<img src="dir/$1">$2', $text );
输出:
<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.
答案 2 :(得分:1)
使用HTML解析器:
<?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();
答案 3 :(得分:0)
由于<a>
标签无法嵌套,并且您已准备好在某些边缘情况下使其失败,因此您可以在此处使用正则表达式。©/ p>
$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;
这给出了:
<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.