1

HTML 文字列を含む変数に対して str_replace を実行しています。目的は、すべての a-href に "data-rel="external" target="_blank"" を追加することです。

$html = str_replace("<a href=", "<a data-rel=\"external\" target=\"_blank\" href=", $html);

正常に動作しますが、ここに課題があります。元の a-href が a-href="mailto:[..] である場合、"data-rel="external" target="_system"" を追加する必要があります。

例:

<a href="http://apache.org">Link 1</a>

なる必要があります:

<a data-rel="external" target="_blank" href="http://apache.org">Link 1</a>

<a href="mailto:post@apache.org">Link 2</a>

なる必要があります:

<a data-rel="external" target="_system" href="mailto:post@apache.org">Link 2</a>

これを解決する方法はありますか?

4

4 に答える 4

0

str_replace を使用できない他のケースでは、preg_replace が便利になる場合があります。

preg_replace('/<a href="mailto/', '<a data-rel="external" target="_system" href="mailto', $html);
于 2013-04-19T15:33:26.960 に答える
0

これは私のために働いた

<?php
$html='<a href="http://apache.org">Link 1</a><a href="mailto:post@apache.org">Link 2</a>';
$html = str_replace('<a href="mailto', '<a data-rel="external" target="_system" href="mailto', $html);
$html = str_replace('<a href=', '<a data-rel="external" target="_blank" href=', $html);
echo $html;
?>

またはこれ

<?php
$html='<a href="http://apache.org">Link 1</a><a href="mailto:post@apache.org">Link 2</a>';
$html = str_replace(array('<a href="mailto','<a href='), array('<a data-rel="external" target="_system" href="mailto','<a data-rel="external" target="_blank" href='), $html);
echo $html;
?>

出力

<a data-rel="external" target="_blank" href="http://apache.org">Link 1</a>
<a data-rel="external" target="_system" href="mailto:post@apache.org">Link 2</a>
于 2013-04-19T15:33:56.710 に答える