#php
#php
Вопрос:
Здравствуйте, итак, у меня есть около 1000 ссылок с текстом привязки, отформатированным следующим образом
<a href="1_1_3.html" >my anchor text1</a>
<a href="1_4_8.html" >my anchor text2</a>
…. etc
я хочу заменить все ссылки href на их собственный текст привязки и добавить .php в конце URL
результат должен быть таким :
<a href="my anchor text1.php" >my anchor text1</a>
<a href="my anchor text2.php" >my anchor text2</a>
Заранее спасибо за ваше время.
Ответ №1:
$dom = new DOMDocument();
$dom->loadHTML($yourhtml);
$anchors = $dom->getElementsByTagName('a');
foreach ($anchors as $a) {
$href = $a->getAttribute('href');
.... manipulate the href
$a->setAttribute('href', $href);
}
$newhtml = $dom->saveHTML();
Ответ №2:
$string = '<a href="1_1_3.html" >my anchor text1</a>
<a href="1_4_8.html" >my anchor text2</a>';
$string = preg_replace('#<a href="(.*?)" >(.*?)</a>#is', '<a href="\2.php" >\2</a>', $string);
echo $string;
Результат:
<a href="my anchor text1.php" >my anchor text1</a>
<a href="my anchor text2.php" >my anchor text2</a>
Демонстрация:http://ideone.com/k9NOc
Комментарии:
1. Это приведет к сбою, если ссылки не будут отформатированы точно так, как они есть в примере OP. Что-то такое простое, как
<a href="1_1_3.html">
не будет соответствовать.2. Это важный нюанс. Если OP (или кто-либо еще) попытается применить этот метод к набору ссылок даже с малейшим отклонением от указанного формата, это не сработает. Синтаксический анализ HTML с помощью DOMDocument устраняет эту проблему, поскольку он не зависит от определенного формата.