Как скопировать текст привязки и заменить ссылку на использование PHP

#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 устраняет эту проблему, поскольку он не зависит от определенного формата.