javascript to add id attribute that is the same as name attribute

I need a simple PHP or javascript script that parses an html page returned as a string, when it finds a name tage that doesn't have an id tag between the < > carrots.it creates an id attribute with the same name as name="objectname".  Anybody have any idea how to do this?
LVL 2
kcg-witchdoctorAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
KhoiNqqConnect With a Mentor Commented:
Here the PHP code you needs
<?php
$str = "<html><body><div name=\"something\"><div name=\"something2\" id=\"test\"></div></div></body></html>";
 
$re  = "/<([^\s>]+) ([^>]+)>/";
if (preg_match_all($re, $str, $match)){
	foreach ($match[2] as $k => $attr_str){
		$attrs = explode(" ", $attr_str);
		$id_found = false;
		$name     = "";
		foreach ($attrs as $attr){
			if (substr($attr, 0, 3) == "id="){
				$id_found = true;
				break;
			}
			if (substr($attr, 0, 5) == "name="){
				$name = substr($attr, 5);
				echo "Found name:" . $name;
			}
		}
		if (!$id_found && $name != ""){
			$current_tag = $match[0][$k];
			$new_tag = substr($current_tag, 0, -1) . " id=" . $name . ">";
			$str = str_replace($current_tag, $new_tag, $str);
		}
 	}
}
echo "Result:\n" . $str;

Open in new window

0
 
ysfxConnect With a Mentor Commented:
Here's a js solution:
	<script>
 
 
		if(document.body.all)
		{
			for(i in document.body.all)
			{
				if(document.body.all[i].name != "" && document.body.all[i].id == "")
					document.body.all[i].id = document.body.all[i].name;
			}
		}
		else
		{
			for(f in document.forms)
			{
 
				for(e in document.forms[f].elements)
				{
					if(document.forms[f].elements[e].name != "" && document.forms[f].elements[e].id == "")
						document.forms[f].elements[e].id = document.forms[f].elements[e].name;
 
				}
			}
		}
 
	</script>

Open in new window

0
 
kcg-witchdoctorAuthor Commented:
Thank you both, i wish i knew how to give 100000 points to yuou both.
0
All Courses

From novice to tech pro — start learning today.