中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php 轉化smiles為分子式

發布時間:2020-06-11 00:00:23 來源:網絡 閱讀:1050 作者:jackdongting 欄目:web開發

近來在使用PHP進行結構式搜索的時候,發現獲取到smiles無法進行查詢操作,然后想到了轉化為分子式的操作。主要是用在有機物。


困難一:我在smiles 上利用正則匹配C,O。遇到了問題就是其他元素也有C字母,所以無法正確去掉C


解決:我只用原來的smiles來分析有機物的組成,然后我按照有機物的結構,單獨找出來C,O的數量,其余元素,簡單統計一下放在后面就好了。主要分為三部分,C數目,O數目,其他元素


實現;1.前臺獲取的smiles,符合相應的規則

    2.php處理

    

                                        $Cnum='';
					$Onum='';
					//print($smiles."原來的");
					$find=array("=","#",".","1","[","]","(",")");
					$replace = array("");
					$smiles=str_replace($find,$replace,$smiles,$j);
					//print($j);
					//ECHO '/n';
					$ChemElement= array("Li","Be","Na","Mg","Al","Si","Cl","Br","Ca","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Gc","Ag","Au");
					foreach($ChemElement as $value){
						//print($value);
						$k_x=substr_count($smiles,$value);
						if($k_x>0){
							$k_x=$k_x==1?'':$k_x;
							//str_replace($value,'',$smiles);
							$smiles_new.=$value.$k_x;
						}
					}
					$k_c=substr_count($smiles,'C');
					//print('C個數'.$k_c);
					$i_c=preg_match_all('/C[a-z]/m',$smiles);
					//print('非碳個數'.$i_c);
					$j_c=$k_c-$i_c;
					//print_r('碳個數'.$j_c);
					//$smiles=preg_replace('/C[0-9A-Z/.]/m','',$smiles,-1,$count);
					//print($smiles);
					//print('替換次數'.$count);
					$k_o=substr_count($smiles,'O');
					//print('O個數'.$k_o);
					$i_o=preg_match_all('/O[a-z]/m',$smiles);
					//print('非氧個數'.$i_o);
					$j_o=$k_o-$i_o;
					//$smiles=preg_replace('/C[0-9A-Z/.]/m','',$smiles,-1,$count);
					//print($smiles);
					//print('替換次數'.$count);
					if($j_c>0){$j_c=$j_c==1?'':$j_c;$Cnum='C'.$j_c;}
					if($j_o>0){$j_o=$j_o==1?'':$j_o;$Onum='O'.$j_o;}
					$smilesPara = $Cnum.$Onum.$smiles_new;
					

					
結果:基本上可以解決一般意義上的分子式,當然元素我沒有寫全,我認為常用的寫一下就好,本來就是為了搜索,不常見的物質,化學品庫里也沒有。

這里推薦一下 斯芬克斯的PHP搜索引擎,很不錯。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高雄县| 区。| 新郑市| 黑水县| 郸城县| 盱眙县| 榆中县| 旬邑县| 开原市| 德庆县| 阿巴嘎旗| 原阳县| 乡城县| 兴隆县| 桐庐县| 余江县| 昌邑市| 合阳县| 呼图壁县| 观塘区| 班玛县| 宜宾县| 荔浦县| 弋阳县| 绥芬河市| 四平市| 中西区| 苍梧县| 九台市| 大英县| 南京市| 波密县| 樟树市| 和平区| 双牌县| 邢台市| 兴业县| 辽阳市| 潮州市| 乡城县| 阿克陶县|