使用<img>标记替换<a>链接到图像

Dol*_*lph 3 php regex

我正在寻找一种方法来查找/替换图像链接(在用户生成的内容中),而无需触摸到非图像的链接.

例如,以下文字:

<a href="http://domain.com/arbitrary-file.jpg">Text</a>
<a href="http://domain.com/arbitrary-file.jpeg">Text</a>
<a href="http://domain.com/arbitrary-path/arbitrary-file.gif">Text</a>
<a href="http://domain.com/arbitrary-file.png">Text</a>

<a href="http://domain.com/arbitrary-file.html">Text</a>
<a href="http://domain.com/arbitrary-path/">Text</a>
<a href="http://domain.com/arbitrary-file#anchor_to_here">Text</a>

Non-hyperlinked URL: http://domain.com/arbitrary-path/arbitrary-file.gif
Non-hyperlinked URL: http://domain.com/arbitrary-file#anchor_to_here
Run Code Online (Sandbox Code Playgroud)

......应修改为:

<img src="http://domain.com/image.jpg" alt="Text" />
<img src="http://domain.com/arbitrary-file.jpeg" alt="Text" />
<img src="http://domain.com/arbitrary-path/arbitrary-file.gif" alt="Text" />
<img src="http://domain.com/arbitrary-file.png" alt="Text" />

<a href="http://domain.com/arbitrary-file.html">Text</a>
<a href="http://domain.com/arbitrary-path/">Text</a>
<a href="http://domain.com/arbitrary-file.html#anchor_to_here">Text</a>

Non-hyperlinked URL: http://domain.com/arbitrary-path/arbitrary-file.gif
Non-hyperlinked URL: http://domain.com/arbitrary-file#anchor_to_here
Run Code Online (Sandbox Code Playgroud)

......在PHP中安全可靠.

gpm*_*dam 7

您可能希望使用HTML解析器(而不是正则表达式,因为您标记了提交),例如PHP Simple HTML DOM Parser.这将为您提供您所说的可靠性.

你最终可能会得到这样的东西:

foreach($html->find('a') as $element)
{
    echo '<img src="'.$element->href.'" alt="'.$element->innertext.'" />';
}
Run Code Online (Sandbox Code Playgroud)

  • +1 - 输入的答案几乎与此相同.在将其盲目转换为图像之前,请确保测试正确的`href`属性(即以.jpg,.gif等结尾).或者你也可以将选择器改为`find('[href $ = jpg],[href $ = gif]')`. (2认同)