php preg_replace: найти ссылки и добавить к нему #hash? - PullRequest
0 голосов
/ 15 марта 2011

у меня следующая структура ...

$output = '<li><a href="http://forum.example.org">Something</a></li>' На самом деле $ output содержит несколько элементов списка.

Какой самый лучший и простой способ применить #hash к каждой ссылке href?как в ...

<li><a href="http://forum.example.org#something">Something</a></li>

Есть идеи, как решить эту проблему?

edit: btw это всегда должен быть такой же #hash, как вы не думаетеВ приведенном выше примере #something соответствует названию ссылки.Так что должно быть # что-то для каждой ссылки.

add_filter('wp_list_pages', 'add_hash'); /*Add #hash to wp_list_pages() function*/
function add_hash($output) {

        $dom = new DOMDocument();
        $dom->loadHTML($output);

        $a_tags = $dom->getElementsByTagName('a');

        foreach($a_tags as $a)
        {
            $value = $a->getAttribute('href');
            $a->setAttribute('href', $value . '#b');
        }

        $dom->saveHTML();

        return $output;
}

1 Ответ

1 голос
/ 15 марта 2011
$dom = new DOMDocument();
$dom->loadHTML($str); // Change to input variable

$a_tags = $dom->getElementsByTagName('a');

foreach($a_tags as $a)
{
    $value = $a->getAttribute('href');
    $a->setAttribute('href', $value . '#something');
}

// Get the new document with: $dom->saveHTML()

Edit:

В приведенном выше коде вам необходимо изменить:

        $dom->saveHTML();

        return $output;
}

Кому:

        return $dom->saveHTML();
}
...