2017-05-16 6 views
0

私のExcelのハイパーリンクのパスをPHPExcelのリンクを開くように変換したい。PHPExcel str_replace

$links = $objPHPExcel->getActiveSheet()->getHyperlinkCollection(); 

このメソッドは、セルアドレスでインデックス付けされたハイパーリンクオブジェクトの配列を返します。適切なコールバックでarray_filter()を使用し、ARRAY_FILTER_USE_KEYフラグを設定して特定の範囲内のものを抽出することができます。

私のvar_dump($リンク);出力:

enter image description here

しかし、私は私がしようとどのようにループarray_filter()関数を使用してオブジェクトの配列を...

に知らない:

$test = str_replace($links, "file", "mnt"); 
var_dump($test); 

を、私は上記のエラーを得ました。どんなアイデアをお願いしますか?

答えて

1

コレクションは、セルアドレスでインデックスされたオブジェクトの配列です。そしてPHPExcel_Cell_Hyperlinkオブジェクトは、そのデータにアクセスし、設定するための文書化メソッドのセットを持っています

foreach($links as $cellAddress => $link) { 
    // get the URL from the PHPExcel_Cell_Hyperlink object 
    $url = $link->getUrl(); 
    // change the URL however you want here 
    $url = str_replace($url, "file", "mnt"); 
    // Set the new value for the link 
    $link->setUrl($url); 
} 

あなたが列NのセルのちょうどそれらのURLを変更したい場合は、あなたがifテストでそれらをラップすることができます。

foreach($links as $cellAddress => $link) { 
    // Test for column N 
    sscanf($cellAddress, '%[A-Z]%d', $column, $row); 
    if ($column == 'N') { 
     // get the URL from the PHPExcel_Cell_Hyperlink object 
     $url = $link->getUrl(); 
     // change the URL however you want here 
     $url = str_replace($url, "file", "mnt"); 
     // Set the new value for the link 
     $link->setUrl($url); 
    } 
}