我正在创建一个本地php脚本来操作从Photoshop导出的HTML文件。我需要为每个网址添加一些参数。这就是我尝试过的:
$newHtmlFile = 'exported.html'; //HTML file exported from photoshop
$htmlContent = file_get_contents($newHtmlFile);
$randomQuery = 'utm_source=onlinenewsletter&utm_medium=email&utm_content=random&utm_campaign=test';
$dom = new DOMDocument;
@$dom->loadHTML($htmlContent);
foreach($dom->getElementsByTagName('a') as $thisLink){
$thisUrl = $thisLink->getAttribute('href');
$parsedUrl = parse_url($thisUrl);
if($parsedUrl['path'] == null){ $thisUrl .= '/'; }
$separator = ($parsedUrl['query'] == NULL) ? '?' : '&';
$newUrl = $thisUrl . $separator . $query;
file_put_contents($newHtmlFile, preg_replace('~\b' .$thisUrl. '\b~u', $newUrl, file_get_contents($newHtmlFile)));
}
从photoshop导出的HTML示例:
<html>
<head>
<title>Some Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table id="Tabla_01" width="570" height="617" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<a href="http://somepage.com/es/es/">
<img src="images/some_image_01.jpg" width="285" height="160" border="0" alt=""></a></td>
<td>
<a href="http://somepage.com/es/es/">
<img src="some_image_02.jpg" width="285" height="160" border="0" alt=""></a></td>
</tr>
</table>
</body>
这不会引发错误,也不会替换网址。
答案 0 :(得分:0)
我看到你的html文件中有相同的url,
最好将它们保存在原位而不是使用preg_replace
。你可以用这个:
$newHtmlFile = 'exported.html'; //HTML file exported from photoshop
$htmlContent = file_get_contents($newHtmlFile);
$randomQuery = 'utm_source=onlinenewsletter&utm_medium=email&utm_content=random&utm_campaign=test';
$dom = new DOMDocument;
@$dom->loadHTML($htmlContent);
foreach($dom->getElementsByTagName('a') as $thisLink){
$thisUrl = $thisLink->getAttribute('href');
$parsedUrl = parse_url($thisUrl);
if($parsedUrl['path'] == null){ $thisUrl .= '/'; echo "here";}
$separator = !isset($parsedUrl['query']) ? '?' : '&';
$newUrl = $thisUrl . $separator . $randomQuery;
//echo "$thisUrl - $newUrl <br/>";
//file_put_contents($newHtmlFile, preg_replace('@' .$thisUrl. '@', $newUrl, file_get_contents($newHtmlFile)));
$thisLink->setAttribute('href', $newUrl);
}
file_put_contents($newHtmlFile, $dom->saveHTML());