PHP 满足条件时更改 href
PHP change href when condition is met
我正在使用 PHP foreach 循环遍历一组超链接。
如果满足条件,我想更改超链接的 href。如果没有,循环可以继续。
我可以使用以下命令回显当前 href: echo $node->getAttribute( 'href' );
但是我无法使用以下方法更改它:$node->setAttribute('href', "https://www.website2.com");
我在这里遗漏了一些东西,但我已经坚持了一段时间。
完整代码:
$dom = new DOMDocument;
$dom->loadHTML($homepage);
foreach ($dom->getElementsByTagName('a') as $node) {
if ($node->getAttribute( 'href' ) == "https://www.website1.com" ) {
echo $node->getAttribute( 'href' );
$node->setAttribute('href', "https://www.website2.com");
}
}
$html = $dom->saveHTML();
也许,如果您仍然遇到问题,以下内容会有所帮助。
<?php
$strhtml="<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>Find and Replace</title>
</head>
<body>
<h1>hmmmm</h1>
<a href='https://www.example.com'>link #1</a>
<a href='https://www.example.com'>link #2</a>
<a href='https://www.example.com'>link #3</a>
</body>
</html>";
$find='https://www.example.com';
$repl='https://www.big-yellow-banana.com';
$dom=new DOMDocument;
$dom->loadHTML( $strhtml );
$xp=new DOMXpath( $dom );
$col=$xp->query( sprintf( '//a[ starts-with( @href, "%s" ) ]', $find ) );
if( $col && $col->length > 0 ){
foreach($col as $node){
$node->setAttribute('href',str_replace($find,$repl,$node->getAttribute('href') ) );
}
}
printf(
'Original:<textarea cols=100 rows=20>%s</textarea>
<br />
Modified:<textarea cols=100 rows=20>%s</textarea>
<br />
<br />
Save this document to keep changes.... ie: $dom->saveHTML("/path/to/my-html-file.html");', $strhtml, $dom->saveHTML() );
?>
哪个应该产生:
我正在使用 PHP foreach 循环遍历一组超链接。 如果满足条件,我想更改超链接的 href。如果没有,循环可以继续。 我可以使用以下命令回显当前 href: echo $node->getAttribute( 'href' ); 但是我无法使用以下方法更改它:$node->setAttribute('href', "https://www.website2.com");
我在这里遗漏了一些东西,但我已经坚持了一段时间。
完整代码:
$dom = new DOMDocument;
$dom->loadHTML($homepage);
foreach ($dom->getElementsByTagName('a') as $node) {
if ($node->getAttribute( 'href' ) == "https://www.website1.com" ) {
echo $node->getAttribute( 'href' );
$node->setAttribute('href', "https://www.website2.com");
}
}
$html = $dom->saveHTML();
也许,如果您仍然遇到问题,以下内容会有所帮助。
<?php
$strhtml="<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>Find and Replace</title>
</head>
<body>
<h1>hmmmm</h1>
<a href='https://www.example.com'>link #1</a>
<a href='https://www.example.com'>link #2</a>
<a href='https://www.example.com'>link #3</a>
</body>
</html>";
$find='https://www.example.com';
$repl='https://www.big-yellow-banana.com';
$dom=new DOMDocument;
$dom->loadHTML( $strhtml );
$xp=new DOMXpath( $dom );
$col=$xp->query( sprintf( '//a[ starts-with( @href, "%s" ) ]', $find ) );
if( $col && $col->length > 0 ){
foreach($col as $node){
$node->setAttribute('href',str_replace($find,$repl,$node->getAttribute('href') ) );
}
}
printf(
'Original:<textarea cols=100 rows=20>%s</textarea>
<br />
Modified:<textarea cols=100 rows=20>%s</textarea>
<br />
<br />
Save this document to keep changes.... ie: $dom->saveHTML("/path/to/my-html-file.html");', $strhtml, $dom->saveHTML() );
?>
哪个应该产生: