獲取裁判文書案號問題的解決過程

2021-07-03 04:29:10 字數 784 閱讀 6820

在獲取了裁判文書之後,我要從中獲取一些關鍵的資訊存入資料庫,以便統計查詢。案號當然是關鍵資訊之一。我手頭有的裁判文書是帶有標籤的,於是解決方案有兩種:一種是通過dom解析標籤獲取資料,一種是直接用正則匹配內容。

剛開始的時候,我覺得裁判文書裡面的存放案號的標籤應該都是一樣的,應該會有個id或者class,那麼這個問題通過第一種方案:用dom去解析標籤獲取內容,很簡單的就可以解決。但是,沒有!啥也沒有!而且存放案號的標籤還不相同!有span,有div,還有font!作為乙個官方的**做得如此粗糙,簡直不敢信!

然後,我就嘗試著用第二種方法去解決,乙個案件的案號一般都有固定的格式,比如:(2013)民二終字第12號。天真的我以為寫個正規表示式就可以了,然後在測試的過程中我發現了,括號有可能是中文括號「(」也可能是英文括號「(",也有可能是沒有」號「字,也有可能沒有」第「字,於是我的正規表示式就寫成了這樣: 

$preg = '/[〔((]\d\s*\d\s*\d\s*\d*\s*[))〕][\s\s]+字\s*[第]?[\s\s]*[號\s]/u';

再去匹配的時候,發現什麼都能匹配到,這個方案也就泡湯了。

這時,經過長時間的各種嘗試與思考,還有桂子的幫組,得出乙個新的方案:將文書裡面的span、font標籤替換成div,再用dom去解析div,得到乙個陣列,再用正則去匹配這個陣列中的每個值,這樣匹配的成功率就大幅提公升,而正規表示式也可以寫得十分簡單:

$preg =

'/\d+.*號$/'

從周五到現在,3天3夜,問題終得到解決,這時我想起了一句歌詞:解決問題的我眼淚掉下來。 

最後,感謝桂子,感謝濤哥!

mysql儲存過程的中文問題的解決

儲存過程中經常會遇到使用中文問題,一般出現的問題有以下幾種 1 字段定義不是中文編碼 2 字段長度不足 3 儲存資訊為亂碼,尤其通過執行sql指令碼新增資料最為常見 4 使用where子句是,對中文字串進行比較,這個問題也是十分常見 對於前兩個問題,我沒啥話。第3個問題,一定要注意執行指令碼的終端,...

記錄ishield遇到的問題的解決過程

1.在啟動isheild過程,發現在export匯入相關環境變數之後,直接使用service apache2 restart命令或 etc init.d apache2 restart命令啟動,變數都不生效。然後,我在 etc apache2 envvar檔案的末尾加上了相關export變數後,模組...

儲存過程分頁的注入問題以及解決

最近發現,很久以前的乙個 專案中的查詢竟然會注入sql,原來是使用的通用的儲存過程分頁,裡面有個引數是 wherestr,這個引數是在拼接sql,所以會造成注入,這個真是蛋疼的問題。很多人沒發現這個問題,所以在這裡說一說,也希望找到完美的解決方法,首先過濾是不行的,過濾說白了是在改變使用者的意志。所...