我使用我用DOMDocument和XPATH解析的cURL讀取數據。 strlen()給出了不規則的計數。使用PHP,DOMDocument和XPATH時的字符串長度問題
一些介紹代碼:
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($data);
$xpath = new DOMXpath($dom);
我取我需要的數據和它的作品很好,但現在我需要比較兩個字符串。原件是從<li>
-tag中直接獲取的。解析是將四個或五個<span>
連接在一起。
$original = $i[$n]['full'];
$parsed = $i[$n]['value'].$i[$n]['type'].$i[$n]['name'].$i[$n]['extra'];
echo $original."<br>";
echo $parsed."<br><br>";
echo strlen($original)."<br>";
echo strlen($parsed)."<br><br>";
得出:
4 -5 boneless chicken breasts
4-5Boneless chicken breasts
70
27
我開始更換所有的空間,試圖mb_strlen有不同的編碼,類型轉換爲字符串瞎搞,但都無濟於事:
$replace = array(' ',',');
$mod_original = str_replace($replace,'',$original);
$mod_parsed = str_replace($replace,'',$parsed);
var_dump($mod_original);
echo "<br>";
var_dump($mod_parsed);
echo "<br><br>";
echo mb_strlen($mod_original,'UTF-8')."<br>";
echo mb_strlen($mod_parsed,'UTF-8')."<br>";
結果:
string(62) "4-5 bonelesschickenbreasts"
string(25) "4-5Bonelesschickenbreasts"
62
25
有些奇怪。 str_replace甚至不會刪除最後一個空格。
任何幫助表示讚賞。
我是,你很可能是正確的。你知道XPATH有足夠的查詢嗎('// li [@ class =「i」] /');以純文本解析它,而不保存標記信息? – Mattis