テキストの一部には、次のようなリンクがいくつかあります。
$regex = '\b(http://www.domain.com/)[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]';
これらの URL を次のような新しいものに変更したいと考えています。
http://www.domain.com/news/item.php?ID=12321&TYPE=25に: /news/page/$arttype-$artID/
$url はそれらの URL のいくつかのリストを提供しますが、$message でそれらを更新できないようです。
これまでのコードは次のとおりです。
$string = "$message";
function do_reg($text, $regex) {
preg_match_all($regex, $text, $result, PREG_PATTERN_ORDER);
return $result[0];
}
$A =do_reg($string, $regex);
foreach($A as $url) {
$check = parse_url($url, PHP_URL_QUERY);
preg_match("/ID=([^&]+)/i", $check, $matches);
$artID = $matches[1];
preg_match("/TYPE=([^&]+)/i", $check, $matches);
$arttype = $matches[1];
preg_replace("$url", "/news/page/$arttype-$artID/", $text);
}
$message にあるすべての一意の URL を更新する方法を知っている人はいますか?
-------V-techのコードを使う----------------
$message = "
<li><strong><a href="http://www.domain.com/news/item.php?ID=12321&TYPE=25" target="_blank">Link 1</a></li>
<li><strong></strong><a href="http://www.domain.com/news/item.php?ID=12300&TYPE=2" target="_blank">Link 2</a></li>
<li><a href="http://www.domain.com/news/item.php?ID=12304&TYPE=2" target="_blank">Link 3</a></li>
<li><a href="http://www.domain.com/news/item.php?ID=12314&TYPE=2" target="_blank">Link 4</a></li>";
$pattern = "/(http:\/\/www\.domain\.com)\/news\/item\.php\?ID=([^&]+)&TYPE=(\d+)/g";
$replacement = "\${1}/news/page/\${2}-\${3}/";
preg_replace($pattern, $replacement, $message);
echo "$message ";