我使用 cURL 获取数据,并使用 DOMDocument 和 XPATH 进行解析。strlen() 给出不规则计数。
一些介绍代码:
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。Parsed 是四五个<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 甚至不会删除最后一个空格。
任何帮助表示赞赏。