我想用另一個替換數據庫(wordpress)中的一些URL,但這很棘手,因爲很多URL都是重定向。我試圖根據結果來將網址替換爲重定向的網址或我選擇的網址。我可以在沒有任何問題的情況下完成匹配,但我無法替換它。我試過str_replace,但它似乎並沒有取代網址。當我嘗試preg_replace時,它會給出「警告:preg_replace():分隔符不能是字母數字或反斜槓」。任何人都可以用正確的方式指出我做到這一點嗎?用另一個替換一個URL而不用正則表達式
if(preg_match($url_regex,$row['post_content'])){
preg_match_all($url_regex,$row['post_content'],$matches);
foreach($matches[0] as $match){
echo "{$row['ID']} \t{$row['post_date']} \t{$row['post_title']}\t{$row['guid']}";
$newUrl = NULL;
if(stripos($url_regex,'domain1') !== false || stripos($url_regex,'domain2') !== false || stripos($url_regex,'domain3') !== false){
$match = str_replace('&','&',$match);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$match);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$html = curl_exec($ch);
$newUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
if(stripos($newUrl,'domain4') !== false)
$newUrl = NULL;
}
else
if($newUrl == NULL)
{ $newUrl = 'http://www.mysite.com/';
}
echo "\t$match\t$newUrl";
$content = str_replace($match,$newUrl,$row['post_content']);
echo "\t (" . strlen($content).")";
echo "\n";
}
}
re error:「警告:preg_replace():分隔符不能是字母數字或反斜槓」 - 向我們顯示正則表達式。聽起來就像你剛剛在表達式中缺少// [[delimiters](http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php))。 – ficuscr 2013-02-15 19:22:41
如果我使用它而不是接近底部的str_replace,則會出現preg_replace錯誤。 preg_replace函數($匹配,$ NEWURL,$行[ 'POST_CONTENT']); – aynber 2013-02-15 19:24:22
爲什麼你不能使用正則表達式來做替換?有問題,但在文本中沒有解釋。 – Thronk 2013-02-15 19:24:51