Замените Specifc полные ссылки между href = "" Использование PHP - PullRequest
0 голосов
/ 13 декабря 2011

Я пытался искать похожие ответы, но не могу найти то, что подходит для моих конкретных потребностей.У меня довольно много партнерских ссылок в тысячах статей на одном из моих WordPress сайтов - все они начинаются с одного и того же формата URL и структуры поддоменов:

http://affiliateprogram.affiliates.com/

Однако после исходного формата URL,К строке запроса добавлены изменения для каждого отдельного URL, чтобы отправлять посетителей на определенные страницы сайта назначения.

Я ищу что-то, что отсканирует строку HTML-кода (тело статьи) для всех ссылок href, которые включают определенный домен выше, и затем заменит ВСЮ ССЫЛКУ (независимо от добавленной строки запроса) другим стандартом.ссылка на мой выбор.

href="http://affiliateprogram.affiliates.com/?random=query_string&page=destination"

заменяется на

href="http://www.mylink.com"

В идеале я хотел бы сделать это через php , так как у меня есть базовые знания, но еслиУ вас есть другие предложения, я был бы признателен за все комментарии.

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 13 декабря 2011

Используйте регулярное выражение, например:

href="(https?:\/\/affiliateprogram.affiliates.com\/[^"]*)"

$data =<<<EOT
  <a href="http://affiliateprogram.affiliates.com/?random=query_string&page=destination">bar</a>
  <a href="/7974779/zamenite-specifc-polnye-ssylki-mezhdu-href-ispolzovanie-php">foo</a>
  <a name="zz" href="http://affiliateprogram.affiliates.com/?query=random&page=destination&string">baz</a>
EOT;

echo (
  preg_replace (
    '#href="(https?://affiliateprogram.affiliates.com/[^"]*)"#i',
    'href="http://www.mylink.com"',
    $data
  )
);

output

<a href="http://www.mylink.com">bar</a>
<a href="/7974779/zamenite-specifc-polnye-ssylki-mezhdu-href-ispolzovanie-php">foo</a>
<a name="zz" href="http://www.mylink.com">baz</a>
1 голос
/ 13 декабря 2011
0 голосов
/ 13 декабря 2011
$a = '<a class="***" href="http://affiliateprogram.affiliates.com/?random=query_string&page=destination" attr="***">';

$b = preg_replace("/<a([^>]*)href=\"http:\/\/affiliateprogram\.affiliates\.com\/[^\"]*\"([^>]*)>/", "<a\\1href=\"http://www.mylink.com/\"\\2>", $a);

var_dump($b); // <a class="***" href="http://www.mylink.com/" attr="***">
0 голосов
/ 13 декабря 2011

Это довольно просто, так как вам нужна только одна метка-заполнитель для строки запроса..*? обычно подходит, но вы можете сделать его более конкретным, сопоставив все, что не является двойной кавычкой:

$html =
preg_replace('~ href="http://affiliateprogram\.affiliates\.com/[^"]*"~i',
              ' href="http://www.mylink.com"', $html);

Люди, вероятно, придут и порекомендуют подход с длинными словами,но это, вероятно, излишне для такой задачи.

...