2017-08-24 76 views
2

我正在抓取一个页面的源代码,其中包含大量列在列中的PDF链接(文件)。 simple_php_dom.phpPHP在foreach循环中替换多个字符串

TALB20170826D-$A$$-RA11.pdf 
TAP$20170826D-$A$$-RA11.pdf 
TASD20170826D-$A$$-RA11.pdf 
TAUA20170826D-$A$$-RA11.pdf 
TAUB20170826D-$A$$-RA11.pdf 
TAUC20170826D-$A$$-RA11.pdf 
TAUD20170826D-$A$$-RA11.pdf 
TBTP20170826D-$A$$-RA11.pdf 
TCBY20170826D-$A$$-RA11.pdf 

我需要foreach循环

foreach($html->find('a') as $element) 
echo $element->href; 

例如TALB是奥尔巴尼的缩写在其中重命名,TAP是亚太地区等的缩写。

我有一个与缩写相对应的名称列表,但不确定如何在循环内重命名它们?任何帮助将不胜感激!

回答

4

你可以把替换的列表中数组:

<?php  
/* 
$list = []; 
$list[] = "TALB20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAP$20170826D-\$A$$-RA11.pdf"; 
$list[] = "TASD20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUA20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUB20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUC20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUD20170826D-\$A$$-RA11.pdf"; 
$list[] = "TBTP20170826D-\$A$$-RA11.pdf"; 
$list[] = "TCBY20170826D-\$A$$-RA11.pdf"; 
*/ 
$list = $html->find('a'); 
$abbr = [ 
    "TALB", 
    "TAP", 
    // ... 
]; 
$replacements = [ 
    "ALBANY", 
    "Asia Pacific", 
    // ... 
]; 
foreach ($list as &$el) { 
    $el->href = str_replace($abbr, $replacements, $el->href); 
} 

Demo

或者,让他们都在同一个关联数组(顺序并不重要,缺少的项目只是不会替换,没有错误):

<?php  
/*$list = []; 
$list[] = "TALB20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAP$20170826D-\$A$$-RA11.pdf"; 
$list[] = "TASD20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUA20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUB20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUC20170826D-\$A$$-RA11.pdf"; 
$list[] = "TAUD20170826D-\$A$$-RA11.pdf"; 
$list[] = "TBTP20170826D-\$A$$-RA11.pdf"; 
$list[] = "TCBY20170826D-\$A$$-RA11.pdf";*/ 
$list = $html->find('a'); 
$abbr = [ 
    "TALB" => "ALBANY", 
    "TAP" => "Asia Pacific", 
]; 
foreach ($list as &$el) { 
    $el->href = strtr($el->href, $abbr); 
} 

Demo

或者使用array_map(),也许你会发现它有点清洁:

$list = array_map(function($el) use($abbr) { 
    return strtr($el, $abbr); 
}, $list); 
+0

将这项工作如果缩写是不是为了或有时不上市? –

+0

它不会以第一种方式,但我以另一种方式进行编辑,并按照您希望的方式进行。 – ishegg

+0

这是有效的!现在我将如何将pdf链接名称放入$ list = []数组中?例如,字符串中的日期每天都会改变,我抓住链接。 –