我有一个<img>
带有“alt”属性的 HTML。我<img>
的包裹在一个<a>
. 有<a>
一个“标题”属性。例如:
<a title="" href ="page.html"><img src="image.jpg" alt="text"></a>
我需要读取 的“alt”属性的值<img>
并将其写入 .的“title”属性值<a>
。有没有办法在 PHP 中做到这一点?
你可以通过php做到这一点
$url="http://example.com";
$html = file_get_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
foreach ($tags as $tag) {
echo $tag->getAttribute('alt');
}
从 NullPointer 开始,
$url="http://example.com";
$html = file_get_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
foreach ($tags as $tag) {
$parent = $tag->parentNode;
if($parent->nodeName == 'a') {
$parent->setAttribute('tittle', $tag->getAttribute('alt'));
}
}
希望能帮助到你
PHP 是一种服务器端语言。所以一旦输出被渲染,你就不能再改变它了。(除非您使用 PHP 下载内容,然后输出更改的数据,但这似乎只有在您无法访问原始源时才有用)如果您在 php 中创建输出,您可以使用:
$alt = 'text';
echo '<a title="'.$alt.'" href ="page.html"><img src="image.jpg" alt="'.$alt.'"></a>';
如果你已经有了输出,你可以使用 jquery ( http://jquery.com/ )
<script type='text/javascript'>
//perform after page is done
$(function() {
//each image in an a tag
$('a img').each(function() {
var $el = $(this);
var alt = $el.attr('alt');
$el.parent('a').attr('title', alt);
});
});
</script>
更新
如果它的纯 PHP 字符串修改,你也可以使用正则表达式来改变它,而不是 dom 操作:
$string = '<a title="" href ="page.html"><img src="image.jpg" alt="text"></a>';
$pattern = '/<a(.*?)title="(.*?)"(.*?)<img(.*?)alt="(.*?)"(.*?)<\/a>/i';
$replacement = '<a${1}title="$5"${3}<img${4}alt="${5}"${6}</a>';
echo preg_replace($pattern, $replacement, $string);
虽然这个问题被标记为php,但我想我会提供一个简单的、纯 JavaScript 的方法来在客户端做同样的事情:
function attributeToParent(tag, from, to, within) {
if (!tag || !from || !to) {
return false;
}
else {
within = within && within.nodeType == 1 ? within : document;
var all = within.getElementsByTagName(tag);
for (var i = 0, len = all.length; i < len; i++) {
if (all[i].getAttribute(from) && all[i].parentNode.tagName.toLowerCase() !== 'body') {
all[i].parentNode.setAttribute(to, all[i].getAttribute(from));
}
}
}
}
attributeToParent('img', 'alt', 'title');
这可以稍微整理一下,但我认为它相对清晰(尽管比我想要的更混乱)。
参考:
您可以尝试使用 JQUERY,
<script>
var altValue = $('img').attr('alt');
$('a').attr('title', altValue);
</script>
当您需要 onClick 并且您有更多 img 和 a 标签时,您必须使用它,如下所示
<script>
function changeTitle(this) {
var altValue = $(this).find('img').attr('alt');
$(this).find('a').attr('title', altValue);
}
</script>