Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 读取一个HTML标记的属性并将其写入另一个HTML标记的属性_Php_Html - Fatal编程技术网

Php 读取一个HTML标记的属性并将其写入另一个HTML标记的属性

Php 读取一个HTML标记的属性并将其写入另一个HTML标记的属性,php,html,Php,Html,我有一个带有“alt”属性的HTML。我的被包装在 我需要读取的“alt”属性值,并将其写入的“title”属性值。有没有办法在PHP中实现这一点?您可以通过PHP实现这一点 <a title="" href ="page.html"><img src="image.jpg" alt="text"></a> 您可以尝试使用JQUERY $url="http://example.com"; $html = file_get_contents($url);

我有一个带有“alt”属性的HTML
。我的
被包装在

我需要读取
的“alt”属性值,并将其写入
的“title”属性值。有没有办法在PHP中实现这一点?

您可以通过PHP实现这一点

<a title="" href ="page.html"><img src="image.jpg" alt="text"></a>

您可以尝试使用JQUERY

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


var altValue=$('img').attr('alt');
$('a').attr('title',altValue);
当您需要在onClick上使用时,如果您有更多的img和a标记,则必须使用此选项,如下所示

<script>
    var altValue = $('img').attr('alt');
    $('a').attr('title', altValue);
</script>

功能更改标题(本){
var altValue=$(this.find('img').attr('alt');
$(this.find('a').attr('title',altValue);
}

PHP是一种服务器端语言。因此,一旦呈现了输出,就不能再对其进行更改。(除非您使用PHP下载内容,然后输出更改后的数据,但这似乎只有在无法访问原始源代码时才有用)如果您使用PHP创建输出,您可以使用:

<script>
    function changeTitle(this) {
        var altValue = $(this).find('img').attr('alt');
        $(this).find('a').attr('title', altValue);
    }
</script>
$alt='text';
回声';
如果已经有了输出,可以使用jquery()


//完成页面后执行
$(函数(){
//标签中的每个图像
$('a img')。每个(函数(){
var$el=$(本);
var alt=$el.attr('alt');
$el.parent('a').attr('title',alt);
});
});
更新

如果它是纯PHP字符串修改,您还可以使用正则表达式来更改它,而不是dom操作:

<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>
$string='';

$pattern='/当问题被标记时,我想我应该提供一个简单、简单的JavaScript,在客户端执行同样的操作:

$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);
函数attributeToParent(标记、从、到、内部){
如果(!标记| |!从| |!到){
返回false;
}
否则{
within=within&&within.nodeType==1?within:document;
var all=在.getElementsByTagName(标记)内;
for(变量i=0,len=all.length;i

这可以稍微整理一下,但我认为它是相对清晰的(尽管比我希望的要混乱一些)

参考资料:


由空指针启动

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');​

希望有帮助

是的,有一种方法,例如DOM。您尝试过什么?如果您是通过PHP呈现整个内容,为什么不能呈现这两个标记的alt属性呢?如果您使用jquery/javascript来实现这一点,会更容易/更快。如果你使用PHP,那么最好让html的每个元素都有id来选择正确的标题。html是由Fireworks生成的,它有一个导出为html选项。这是一封HTML电子邮件。我正在对这段HTML进行一些后端处理,以添加所需的额外属性。好的,谢谢,这将为我获取给定图像的“alt”属性值。接下来,我需要将该值写入其周围锚标记的“title”属性。有什么想法吗?谢谢你用这个空指针把我踢开!Martinqt设法完成了解决方案。干杯好极了!!非常感谢这一点,它帮了我很大的忙!谢谢这个雨果,一个非常简洁的解决方案!而这会在网页上有所帮助。在我的例子中,我在后端做一些字符串处理。啊,好吧,更新了一些preg_替换,即使你已经有了你的awnser。谢谢这个Vinoth,而你的解决方案会在网页上有所帮助。在我的例子中,我在后端进行一些字符串处理。无论如何谢谢你!!!谢谢你,大卫!我需要这是一个后端进程的一部分,虽然。我正在处理一段来自“导出为HTML”的HTML。我需要通过一个脚本运行HTML来整理一下。为Javascript解决方案干杯。不客气!我认为这很可能是服务器端的事情,但我看到了(有些不必要的)jQuery答案,并希望提供一个简单的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');​
  $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'));
     }
  }