2017-05-16 3 views
0

Ich möchte den Pfad meines Excel-Hyperlinks konvertieren, um Verknüpfungen mit PHPExcel zu öffnen.PHPExcel str_replace

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

Diese Methode gibt ein Array von Hyperlink-Objekten zurück, indiziert nach Zelladresse; und Sie könnten dann array_filter() mit einem entsprechenden Callback und dem ARRAY_FILTER_USE_KEY-Flag verwenden, um diese innerhalb eines bestimmten Bereichs zu extrahieren.

mein var_dump ($ links); Ausgang:

enter image description here

Aber ich weiß nicht, wie das Array von Objekten mit array_filter() Funktion Schleife ..

Ich versuche:

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

und ich habe über den Fehler. Irgendwelche Ideen bitte?

Antwort

1

Die Auflistung ist ein Array von Objekten, indiziert nach Zellenadresse; und das PHPExcel_Cell_Hyperlink Objekt verfügt über eine Reihe von dokumentierten Methoden für den Zugriff auf und Einstellung seiner Daten:

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); 
} 

Wenn Sie nur diese URLs für Zellen in der Spalte N ändern möchten, dann können Sie sie in einem if Test wickeln:

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); 
    } 
}