views:

35

answers:

2

Hi everybody,

I'm using PHP to echo a content stored on my database. The content is a DIV carrying any type of data. The problem is that I don't know the ID and I have some problems with these DIVs if I try to display them more that once.

So, the idea is to modify the DIV id each time I'd like to display them. Something like this:

<?php modify_div_id($data,"id-456"); ?>

Is there a solution for this problem? Thank you very much, regards.

+1  A: 

This is ugly, but i think it works.

function modify_div_id( $data, $new_id ) {
  return preg_replace( '/(<div[^>]+?id=)("|\')(.*?)("|\')/i', '$1$2' . $new_id . '$4', $data );
}

The best way to go is to use an XML parser to change the attribute.

Edit: the function assumes the div to already have an id attribute.

Edit #2
It seems to be working!

jwandborg@sophie:~$ cat | php -r "eval( file_get_contents('php://stdin') );"
function modify_div_id( $data, $new_id ) {
  return preg_replace( '/(<div[^>]+?id=)("|\')(.*?)("|\')/i', '$1$2' . $new_id . '$4', $data );
}
echo modify_div_id('<div pajas="pajas" id="fisk">Innehåll</div>', 'nytt_id');

# Result: <div pajas="pajas" id="nytt_id">Innehåll</div>
jwandborg
A: 

Your question is worded kind of vague.

First off, the id attribute for HTML elements must be unique, so echoing a unique id is appropriate (you can also use a class).

If you've queried your database and received back, say, an array containing an id and the content, you can use the function as follows:

function modify_div_id($data, $id) {
  echo "<div id='$id'>$data</div>";
}

Just an example.

thinkswan