私はかなり長い間これをしてきました。イメージタグのあとのリンクとスパンでイメージをラップしています:PHPドーム画像をリンクでラップしてイメージタグの前にスパンを追加
<a href="">
<img src="">
<span></span>
</a>
しかし、私が欲しいワットは、次のとおりです。私はアルvariatonsの種類と
$img->parentNode->appendChild($dom->createElement('span'), $img);
の位置とinsertBeforの使用を試みた
<a href="">
<span></span>
<img src="">
</a>
私のコードのすべての種類の場所でe()を使うことができます。私はphp DOMのことがかなり新しいので、アイデアはまったくありません。マイソース:
foreach($dom->getElementsByTagName('img') as $img)
{
$fancyHref = $dom->createElement('a');
$clone = $fancyHref->cloneNode();
$img->parentNode->replaceChild($clone, $img);
$clone->appendChild($img);
$img->parentNode->appendChild($dom->createElement('span'));
};
更新: が私の目標を明確にする:私は、HTMLのimgタグを持っています。
<img src="" />
<a href="">
<span class=""></span>
<img src="" />
</a>
後前に:それはPHPのDOMを通過した後、私は、画像タグの前にspanタグとタグに包まれたimgタグをしたいですこれを行うための現時点のコード(スパンなし)
foreach($dom->getElementsByTagName('img') as $img)
{
$src = $img->getAttribute('src');
$filename = substr(strrchr($src , '/') ,1);
$filename = preg_replace('/^[.]*/', '', $filename);
$filename = explode('.', $filename);
$filename = $filename[0];
if($this->imagesTitles[$this->currentLanguage][$filename] !== '')
{
$img->setAttribute('title', $this->imagesTitles[$this->currentLanguage][$filename]);
$img->setAttribute('alt', $this->imagesTitles[$this->currentLanguage][$filename]);
}
else
{
$img->removeAttribute('title');
$img->removeAttribute('alt');
}
$classes = explode(' ', $img->getAttribute('class'));
if(!in_array('no-enlarge', $classes))
{
$fancyHref = $dom->createElement('a');
$span = $dom->createElement('span');
$span->setAttribute('class', 'magnifier');
$fancyHref->setAttribute('class', 'enlarge');
$fancyHref->setAttribute('rel', 'enlarge');
$fancyHref->setAttribute('href', $img->getAttribute('src'));
if($img->getAttribute('title') !== '')
{
$fancyHref->setAttribute('title', $img->getAttribute('title'));
$fancyHref->setAttribute('alt', $img->getAttribute('title'));
}
$clone = $fancyHref->cloneNode();
$img->parentNode->replaceChild($clone, $img);
$clone->appendChild($img);
$img->parentNode->insertBefore($span, $img);
}
$img->setAttribute('class', trim(str_replace('no-enlarge', '', $img->getAttribute('class'))));
if($img->getAttribute('class') === '')
{
$img->removeAttribute('class');
}
}
「parentNode」のこれらの関数はどこにありますか? –
物事をまっすぐにするには、すでにイメージがあり、前にスパンを入れたいのですか? – Itay
はい。 HTMLにイメージタグがあります。私がしたいことは、その周りにaをラップし、その前にspanタグを配置することです。私は自分が望むものを説明するために質問を更新しました。 –