說明:從一個頁面採集ip和連接埠,$ip和$duankou是採集的,然後發現不能用,但是手動輸入可以用,對比了
兩個字串,發現長度不相同,但是編碼相同,請教這該怎麼辦
現在是 $b 是有效,$a無效,
$a="tcp://".$ip.":".$duankou;$b="tcp://77.81.105.147:7808";echo $a."
";echo $b."
"; $encode = mb_detect_encoding($a, array("ASCII","UTF-8","GB2312","GBK","BIG5")); $encodes= mb_detect_encoding($b, array("ASCII","UTF-8","GB2312","GBK","BIG5")); echo $encode."
";echo $encodes."
";$changdu1=strlen($a);$changdu2=strlen($b);echo $changdu1."
";echo $changdu2;if($a==$b){echo "相等";}else{echo "不等";}
輸出:
//字元tcp://77.81.105.147:7808tcp://77.81.105.147:7808//編碼ASCIIASCII//長度4224//結果不等
回複討論(解決方案)
var_dump($a, $b, $encode, $encodes);
貼出結果
最好是
echo base64_encode(serialize(array($a, $b, $encode, $encodes)));
貼出結果
採集的資料裡有不可見的Null 字元吧,把ip和port trim()一下試試
最好是
echo base64_encode(serialize(array($a, $b, $encode, $encodes)));
貼出結果
結果
YTo0OntpOjA7UzoyNDoidGNwOi8vNzcuODEuMTA1LjE0Nzo3ODA4IjtpOjE7Uzo0MjoidGNwOi8vPHRkPjc3LjgxLjEwNS4xNDc8L3RkPjo8dGQ+NzgwODwvdGQ+IjtpOjI7Uzo1OiJBU0NJSSI7aTozO1M6NToiQVNDSUkiO30=
採集的資料裡有不可見的Null 字元吧,把ip和port trim()一下試試
trim() 過了,還是一樣的
$s = 'YTo0OntpOjA7UzoyNDoidGNwOi8vNzcuODEuMTA1LjE0Nzo3ODA4IjtpOjE7Uzo0MjoidGNwOi8vPHRkPjc3LjgxLjEwNS4xNDc8L3RkPjo8dGQ+NzgwODwvdGQ+IjtpOjI7Uzo1OiJBU0NJSSI7aTozO1M6NToiQVNDSUkiO30=';$a = unserialize(base64_decode($s));var_dump($a);
array(4) { [0]=> string(24) "tcp://77.81.105.147:7808" [1]=> string(42) "tcp://77.81.105.147:7808" [2]=> string(5) "ASCII" [3]=> string(5) "ASCII"}
原因很明顯了吧?
其實你在瀏覽器中查看網頁原始碼就可以發現的
原來問題在這,我疏忽了,多謝了