0

これは、名前とURLをスクレイピングするために使用したコードですが、すべての名前は~. ~その部分を削除したいと思います。使ってみまし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 線の順序です。それらを切り替えると、機能するはずです。

EDIT2:

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

する必要があります

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