Самый простой способ конвертировать все ссылки HTML в строку, используя PHP - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь преобразовать блок текста, который содержит HTML-текст - я хотел бы найти все ссылки http и преобразовать их для целей отслеживания ссылок.

Так, например, что-либо подобное в строке будетпреобразован в последний

<a href="http://www.google.com">Some Link</a>

<a href="http://www.mysite.com/tracking.php?url=www.google.com">Some Link</a>

Может кто-нибудь, как это сделать с учетом того, что оригинальная строка будет состоять из всех видов HTML, изображений и т.д ..

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Используйте это регулярное выражение: (ОБНОВЛЕНО)

<?php

$str = '<h1>Page Title</h1><a href="http://www.google.com/">Google</a>';
$text = preg_replace("/href=\"http\:\/\/([a-zA-Z0-9\-]+\.[a-zA-Z0-9]+\.[a-zA-Z]{2,3}(\/*)?)/","href=\"http://www.mysite.com/tracking.php?url=$1\"",$str);

echo $text;

?>

Выходы:

<h1>Page Title</h1><a href="http://www.mysite.com/tracking.php?url=www.google.com/"">Google</a>
0 голосов
/ 02 апреля 2012
$str = '<h1>Page Title</h1><a href="http://www.google.com">Google</a>';
$text = preg_replace('href=\"http\://([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?)\"', 'href=\"YOUR_TRACKING_URL=$1\"', $str);
echo $text;

Предупреждение: preg_replace () [function.preg-replace]: разделитель не должен быть буквенно-цифровым или иметь обратную косую черту в / home / .... (извините за дублирование)

...