1. 程式人生 > >PHP批量過濾MYSQL資料庫內站外連結和圖片

PHP批量過濾MYSQL資料庫內站外連結和圖片

因發現站內很多引用站外文章的連結失效,產生大量的死連結,對於搜尋引擎來說是極不友好的,很不利於網站優化,所以站內添加了站外連結過濾功能,對於新加的文章,在新增入庫時就自動增加rel="nofollow"標籤,見文章《增加對站點內容外部連結的過濾》。因考慮如果是在前臺呼叫資料時過濾的話,對網頁開啟速度,伺服器能耗都增加許多,所以就採用的是入庫時新增。

那麼,原來已有的資料怎麼辦?現在需要對原來的資料也進行此操作,如果是在後臺一條條編輯來實現,即使只需要點一下,工程量也是很大的,那麼就需要一個批處理操作。

寫一個批處理程式即可,經除錯,測試,以下的程式可很好的替換原來資料庫裡面的外部連結和外部圖片

如,站點是http://www.ledaokj.com

一個圖片是 http://www.53sj.net/data/attachment/block/d3/d34780d1fca3d6b7960a7eb7a2c4c0d3.jpg

經過批處理操作後

<img src="http://www.53sj.net/data/attachment/block/d3/d34780d1fca3d6b7960a7eb7a2c4c0d3.jpg" rel="external nofollow"

批量過濾MYSQL資料庫內站外連結和圖片程式程式碼

global $config,$db; $sql = "SELECT `id`,`content` FROM `{$db->prefix}article`"; $a_list = $db->query($sql); $domain = $config['url']; $domain = substr($domain,0,strlen($domain)-1);  //修正當前域名網址 foreach($a_list as $a){ $content = content_nofollow($a['content'],$domain); update_a($a['id'],addslashes($content)); } exit; function update_a($id,$content){ global $config,$db; $sql = "update `{$db->prefix}article` SET `content`='{$content}' where `id`={$id}"; if($db->execute($sql)){echo $id.'更新成功!<br />';} } //外部連結增加nofllow $content 內容 $domain 當前網站域名 function content_nofollow($content,$domain){  preg_match_all('/href="(.*?)"/',$content,$matches);  if($matches){   foreach($matches[1] as $val){    if( strpos($val,$domain)===false ) $content=str_replace('href="'.$val.'"', 'href="'.$val.'" rel="external nofollow" ',$content);   }  }  preg_match_all('/src="http:(.*?)"/',$content,$matches);  if($matches){   foreach($matches[1] as $val){    if( strpos($val,$domain)===false ) $content=str_replace('src="http:'.$val.'"', 'src="http:'.$val.'" rel="external nofollow" ',$content);   }  }  return $content; }

相關推薦

PHP批量過濾MYSQL資料庫內連結圖片

因發現站內很多引用站外文章的連結失效,產生大量的死連結,對於搜尋引擎來說是極不友好的,很不利於網站優化,所以站內添加了站外連結過濾功能,對於新加的文章,在新增入庫時就自動增加rel="nofollow"標籤,見文章《增加對站點內容外部連結的過濾》。因考慮如果是在前臺呼叫資

php批量更新mysql中的資料

php批量修改資料到mysql資料庫中: public function doBatchModify($data=[],$table='user'){ $userModel = new \Common\Model\UserModel(); $data = array

MySQL-資料庫內連線與連線與交叉連線

資料庫中涉及兩個表之間的資料查詢通常使用連線的方法實現。連線分為內連線和外連線。 內連線: 指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。 外連線: 連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。包括左外連線、

PHP線上生成mysql資料字典

<?php header('content-type:text/html;charset=utf-8'); define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PASS',

mybatis 批量插入mysql資料並根據唯一索引做自動去重判斷的插入語句

宣告: 此處為mybatis 操作mysql資料庫實現批量插入。再根據表的唯一索引來判斷資料是否重複,如果重複則更新,如果不重複則新增的xml寫法 注意: 首先在表中建立可以確認資料唯一性的唯一索引: 例如:UNIQUE KEY `unionIndex` (`keyword_id`,

mysql資料庫內STRING系列資料型別介紹

varchar(M):       用於儲存可變長度的字串。  字串佔用空間隨字串實際長度佔用空間變化。   實際長度 <= 設定長度M。   M範圍:1~255。   需要1到2個位元組來儲存一個字元。 char(M):        用於儲存定長的字串。  

PHP如何查詢MySQL資料頁面並輸出內容到頁面,並另存為CSV或EXCEL檔案

<?​ header("Content-type:text/html;charset=utf-8"); /** * mysql connection configure * 2016-04-09 * Ron */

PHP批量匯入excel資料到資料庫簡易版方法(From Jeskitt)

//常用方法是結合PHPExcel外掛來實現excel資料到資料庫的批量插入,而這裡介紹的是另外一種簡易又靈活方法來實現。 1、首先把要處理的excel文件的資料複製下來,到txt文字中儲存 2、實現程式碼 public function excelIn

一個比較常用的關於php下的mysql資料操作類

<?php /************************************************************* MySql類封裝: 首先連線資料庫,需要有引數 引數如何傳? 1、可以用配置檔案 2、可以通過建構函式傳參 ************

如何利用LoadRunner最高效的批量製造MySQL資料

批量製造資料的方法有很多種,也有許多專業的工具,但是都算不上高效,針對MySQL的批量插入資料,目前認為最高效的方式是通過執行JAVA程式碼(通過設定事務為非自動提交,以executeBatch批處理提交大量插入事務)來實現,但是JAVA的靈活引數化和大使用者量分散式併發執行

通過shell指令碼 動態批量匯出mysql 資料

一般mysql匯出資料會使用select into outfile  匯出,這種方式只有在命令列模式下才能把檔案生成 到本地,如果通過儲存過程執行,檔案會生成到mysql資料庫所在的主機上。 這個時候如果你需要動態配置查詢條件來匯出檔案,就會變得很麻煩。這種情況下,可以使用

php 批量修改mysql 數據表,字段 字符集編碼

數據表 utf 數據庫名 alt ont class char continue mys $sql="SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ‘數據庫名稱‘"; $r=$pdo-&g

Mysql主鍵、索引的區別

post 標識 mysq 個數 字段 一個 區別 允許 mysql 定義主鍵--唯一標識一條記錄,不能有重復的,不允許為空外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重復的, 可以是空值索引--該字段沒有重復值,但可以有一個空值 作用主鍵--用來保證數據完整性外鍵--

mySql內連線,左連線連線,

1.使用連線查詢的場景 將多張表進行記錄的連線查詢(按照某個欄位指定的條件進行資料的拼接); 進行資料的拼接(兩張表的內容顯示在一個結果表中 使用連線查詢) 最終的結果是:記錄數有可能變化,欄位數一定會增加(至少兩張表的合併) 意義:在使用者檢視資料的時候,顯示的資料

mysql資料定義語言(DDL)庫表(建立庫、建立表)

mysql資料定義語言(DDL)庫和表(建立庫、建立表) 我就直接po截圖和程式碼了,程式碼中有註釋 # SHOW VARIABLES WHERE variable_name = 'datadir'; SHOW VARIABLES WHERE variable_name LIKE

題目:MySql資料查詢題目(學生課程成績)

1)     建立student和score表 2)     為student表和score表增加記錄 3)     查詢student表的所有記錄 SELECT * from student 4)     查詢student表的第2條到4條記錄 SELECT * FROM

連結連線

兩個表: A(id,name) 資料:(1,張三)(2,李四)(3,王五) B(id,name) 資料:(1,學生)(2,老師)(4,校長) 左連線結果: select A.*,B.* from A left join B on A.id=B.id; 1 張三 1 學生 2

php 結合緩衝區讀取excel資料批量匯入mysql

在工作中,很多時候需要把excel中的資料讀取出來,匯入到mysql中,以前的程式碼,都是通過 Spreadsheet_Excel_Reader外掛直接取出來,進行for迴圈,組合成一個長的sql語句,這樣進行插入,但是這樣的匯入有不足之處就是如果匯入的資料量龐大,那麼會造

Debian7配置LAMP(Apache/MySQL/PHP)環境及搭建建

topic -- mysq nts gist 根據 ads prot 固定 完整Debian7配置LAMP(Apache/MySQL/PHP)環境及搭建建站 第一、安裝和配置Apache Web服務器 運行升級命令來確保我們的系統組件各方面都是最新的。 apt

mysql進階(十五) mysql批量刪除大量資料

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!