2011-10-15 5 views
0

Здравствуйте, так что я есть около 1000 связь с якорным текстом отформатированные как этотКак скопировать якорный текст и заменить HREF с помощью PHP

<a href="1_1_3.html" >my anchor text1</a> 
<a href="1_4_8.html" >my anchor text2</a> 

.... и т.д.

я хочу, чтобы заменить все 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(); 
+0

+1 для использования DOM для разбора HTML. – Herbert

0
$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

+0

Это не удастся, если ссылки не форматируются _exactly_, как они есть в примере OP. Нечто похожее на '' не будет соответствовать. – Herbert

+0

@ Герберт, я знаю ... текст, сформированный следующим образом: –

+0

Это важное предостережение. Если OP (или кто-либо еще) должен попытаться применить этот метод к набору ссылок с хотя бы малейшим отклонением от указанного формата, это не сработает. Анализ HTML с помощью DOMDocument устраняет эту проблему, поскольку он не зависит от конкретного формата. – Herbert

Смежные вопросы