再次。 我試圖通過一個數據庫表,並替換舊的BBCode(即:[i:fs8d979]
)的所有實例,並用簡單的BBCode([i]
)替換它。但是,我收到了令人困惑的結果。php正則表達式匹配和替換
$root_path = './';
include($root_path.'includes/common.php');
$posts = array();
$sql = 'SELECT post_id, post_text FROM posts';
$db->query($sql);
while($row = $db->fetch_assoc())
{
$posts[]['id'] = $row['post_id'];
$posts[]['text'] = $row['post_text'];
}
foreach($posts as $post)
{
$regex = "/\[(\D)(\:[a-zA-Z0-9_]{1,})\]/";
if(preg_match($regex, $post['text'], $matches))
{
$string = preg_replace('/'.$matches[2].'/', '', $post['text']);
$sql = 'UPDATE posts SET post_text = "'.$string.'" WHERE post_id = '.$post['id'];
$db->query($sql);
echo $post['id'].'--Matched and replaced<br />';
}
else
{
echo $post['id'].'--No Match<br />';
}
}
echo 'done';
當我運行該腳本,我得到的輸出是這樣的:
1302--No Match
--No Match
1303--No Match
--No Match
17305--No Match
--Matched and replaced
5532--No Match
--No Match
17304--No Match
--No Match
1310--No Match
--No Match
它會出現腳本試圖做的一切兩次,我不知道爲什麼。數據庫字段也沒有得到更新。 爲了調試的目的,我回應了所有的東西,並且設置了所有變量,並且所有變量看起來都應該正常工作。 有什麼建議嗎?
就是這樣。我知道我必須做些愚蠢的事情。大聲笑。謝謝! – chaoskreator