2017-09-13 11 views
0

私はアンカータグにラップする必要があるショートコードを使用していますが、既にコードを破っているように見えるアンカー要素が含まれています。アンカー要素は、予期しない結果を引き起こす可能性があり、あまり論理的ではないため、入れ子にしないでください。PHPはエコーする前にショートコードからアンカー要素を削除します

DOMにエコーする前に、ショートコードからアンカー要素を削除することは可能ですか? 例を挙げてこれを説明しようとしますが、明確でない場合は私に言い訳をしてください。

<a href="http://desired-link-outside-shortcode"> 
    <div class="container"> 
    <h1>Heading</h1> 
    some code here 
    <a href="http://example/url">Click me</a> 
    </div> 
</a> 
を:[例]のコンテンツが

<div class="container"> 
    <h1>Heading</h1> 
    some code here 
    <a href="http://example/url">Click me</a> 
</div> 

であり、これは、それがこのようなHTML DOMに表示されるはずアンカータグ

echo '<a href="http://desired-link-outside-shortcode">'.$shortCode.'</a>'; 

に包まれる必要がある $shortCode = do_shortcode([example]);の場合

しかし、エコーされると、domのように表示されます。

<a href="http://desired-link-outside-shortcode"> 

</a> 
<div class="container"> 
    <h1>Heading</h1> 
    some code here 
    <a href="http://example/url">Click me</a> 
</div> 

私はエコーする前にすべてのアンカー要素を削除したいと考えています。

私は(テストコードを言い訳)必要に応じて動作しませんでした、これを試してみました:

$shortCode = do_shortcode([my_shortcode]); 
$startFirstAchor = strpos($shortCode, '<a href'); 
$endFirstAchor = strpos($shortCode, '</a>') + 4; 
$lengthFirst = $endFirstAchor - $startFirstAchor; 
$endShortcode = strlen($shortCode); 
$lengthSecond = $endShortcode - $endFirstAchor; 

$firstPartCode = substr($shortCode, 0, $lengthFirst); 
$secondPartCode = substr($shortCode, $endFirstAchor, $lengthSecond); 
$refinedShortCode = $firstPartCode . $secondPartCode; 

echo $refinedShortCode; 

私はPHPがプロのように役立つか、これを達成するための代替方法評価されていないです。

+0

代わりにWPsの 'do_shortcode'のアンカーを使用してみませんか? – lumio

+1

このリンクをチェックしてください。 https://stackoverflow.com/questions/13052598/creating-anchor-tag-inside-anchor-tag –

答えて

1

はこれを試してみてください:

$dom = new DOMDocument(); 
$dom->loadHTML(do_shortcode('[my_shortcode]')); 

foreach ($dom->getElementsByTagName('a') as $node){ 
    $node->parentNode->removeChild($node); 
} 
+0

ありがとうございます。これによりアンカー要素が正常に削除されましたが、domはアンカー要素でショートコードを解析していました。 'echo $ dom-> saveHTML();'も必要であることに注意してください。 – Shaun

関連する問題