0

这是我用来抓取名称和网址的代码,但每个名称都以~. 我想删除~部分。我尝试过使用str_replace,但从外观上看似乎不对。(也对其进行了测试,结果相同)

foreach ($div_category as &$div){
    $a_list = $div->find("a");
    foreach ( $a_list as &$anchor){
        //put the data into an array and then write array out to a csv file.
        $csv_array=array($anchor->plaintext, $anchor->getAttribute("href") );
        $anchor = str_replace( '~', ' ', $anchor);
        fputcsv($csv_out, $csv_array);

当前结果示例:

name      url
~john     www.john.com
~bob      www.bob.com
~rob      www.rob.com
4

1 回答 1

1
<?php
$str = "~~~~~~";
$str = str_replace("~","!",$str);
echo $str;
?>

为我工作。所以更换零件应该没问题。您必须“错误地”处理锚的属性。尝试使用以下方法打印锚点:

print_r($anchor) 

看看你应该使用什么属性

编辑:

foreach ($div_category as &$div){
    $a_list = $div->find("a");
    foreach ( $a_list as &$anchor){
        //put the data into an array and then write array out to a csv file.
   ->   $csv_array=array($anchor->plaintext, $anchor->getAttribute("href") ); // line X
   ->   $anchor = str_replace( '~', ' ', $anchor);                            // line Y
        fputcsv($csv_out, $csv_array);

问题是用箭头标记的 X 和 Y 线的顺序。切换它们,它应该可以工作。

编辑2:

$anchor = str_replace( '~', ' ', $anchor);

应该

$anchor->plaintext = str_replace( '~', '', $anchor->plaintext);
于 2011-11-12T08:52:07.523 回答