В PHP как я могу заменить теги <a href="xxx"> тегами <span data-href = "xxx">? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь полностью исключить некоторые теги <a>, но сохраняю текст и оригинальную ссылку в классифицированном теге <span>.

До: <a href="www.example.com">Click here</a>

После: <span class="myClass" data-href="www.example.com">Click Here</span>

Мне удалось заменить ссылку простым текстом с кодом ниже, но я узнал, что не могу включить какую-либо разметку.Как я могу изменить код для выполнения до / после сверху ??

$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML($output);
$domx = new DOMXPath($domd);
foreach ($domx->query("//a") as $link) {
    $href = $link->getAttribute("href");
    if (strpos($href, 'oursite.com') === false) {
        continue;  // Don't change links to our site.
    }
    $text = $domd->createTextNode($link->nodeValue);
    $link->parentNode->replaceChild($text, $link);
}

1 Ответ

2 голосов
/ 11 июля 2019

Вот что вы можете сделать:

$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML($output);
$domx = new DOMXPath($domd);
foreach ($domx->query("//a") as $link) {
    $href = $link->getAttribute("href");
    // by the way, it should be NOT false to skip your urls
    if (strpos($href, 'oursite.com') !== false) {
        continue;  // Don't change links to our site.
    }
    // create span-element
    $span = $domd->createElement('span', $link->nodeValue);
    // set span attributes
    $span->setAttribute('class', "myClass");
    $span->setAttribute('data-href', $href);

    // replace $link with $span
    $link->parentNode->replaceChild($span, $link);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...