RSSフィード内のすべてのURLに追加の文字列(「/ tests123」など)を追加しようとしています。RSSの元のURL形式は次のようになります。
<link rel="alternate" type="text/html" href="http://website.com/item/name1/2162561"/>
<link rel="alternate" type="text/html" href="http://website.com/item/name2/2162435"/>
など、forループでstr_replaceとともに正規表現を使用しましたが、正しく機能していないようで、preg_replaceを使用するとエラーが発生します。文字列が追加されたURLをエコーアウトすると、希望どおりに表示されますが、str_replaceを使用すると、代わりにURLは次のようになります。
http://website.com/testing123/item/name1/2162561
http://website.com/testing123/item/name2/2162435
ただし、次のように置き換えられたときに、最後に追加文字列が含まれるURLが必要です。
<link rel="alternate" type="text/html" href="http://website.com/item/name1/2162561/testing123"/>
<link rel="alternate" type="text/html" href="http://website.com/item/name2/2162435/testing123"/>
私が持っているコードは次のとおりです。
<?php
// The append string
$append = '/testing123';
// The file
$file = "RSS.txt";
// Get the files contents
$contents = file_get_contents($file);
// The search pattern
$SearchPattern = '/href=["|\'](.[^"|\']+)/i';
// Run preg_match_all to grab all the Matches
preg_match_all( $SearchPattern, $contents, $Matches );
// Check to see if we have at least 1 match
$MatchCount = count($Matches[0]);
// If there is more than 1 match then run a for loop
if ( $MatchCount > 0 ) {
for ( $i=0; $i < $MatchCount ; $i++ ) {
$temp = $Matches[0][$i];
echo $temp . $append . '<br />'; // Appears to work
//$contents = str_replace($temp, $temp . $append, $contents); // But str_replace doesn't seem to work
//preg_replace($temp, $temp . $append, $contents); // And using preg_replace gives a error
};
};
echo $contents; // Display the contents
?>