Solved

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

Posted on 2008-06-11
3
1,495 Views
Last Modified: 2012-06-27
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?
0
Comment
Question by:kcg-witchdoctor
3 Comments
 
LVL 3

Accepted Solution

by:
KhoiNqq earned 250 total points
ID: 21766240
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
 
LVL 6

Assisted Solution

by:ysfx
ysfx earned 250 total points
ID: 21766309
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
 
LVL 2

Author Closing Comment

by:kcg-witchdoctor
ID: 31466434
Thank you both, i wish i knew how to give 100000 points to yuou both.
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
"Go Fund Me" type plugin 5 24
jQuery Toggle & Anchor Links 5 43
removing a class in javascript 4 47
Do alert on select 6 13
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question