primefalcon Posted April 24, 2010 Share Posted April 24, 2010 Here's the issue, I have a back-end set up for my site where I talk and such.... I didn't want to use wordpress this time... anyhow I have your basic HTML form take data and passing it to to a fucntion to put into a database... then when someone views the page it access the database and displays said posts I make like wordpress does but... here's my issue...... I also have an edit function, that pulls that data from the database and displays it in a form for editing.... my problem is this.... If I have entered any html entities such as <p> when the form pulls it, it actually reverting to the proper html tag <p> instead of keeping it as <p>, this is a problem for me since If I forget to re-enter all the htmlentities when I edit for say just a simple spelling mistake, it plays havoc on my markup... For reference before I put it into the database I have it going through the mysql_real_escape function before it's entered into the database, does anyone have any idea whats going on? Link to comment https://forums.phpfreaks.com/topic/199580-htmlentities-problem-with-a-mysql-database/ Share on other sites More sharing options...
Psycho Posted April 24, 2010 Share Posted April 24, 2010 Why are you entering "<p>"? Is the purpose of this data to display code to the user? If so, just use <XMP> tags so you don't have to enter in the codes for those characters. Example: <b>Here is the code</b> <xmp> <b>Bold Text</b> <div>A Div</div> </xmp> Output: Here is the code <b>Bold Text</b> <div>A Div</div> Link to comment https://forums.phpfreaks.com/topic/199580-htmlentities-problem-with-a-mysql-database/#findComment-1047613 Share on other sites More sharing options...
primefalcon Posted April 24, 2010 Author Share Posted April 24, 2010 I thought xmp was deprecated (in favor of pre, which does not do what I want) from 3 and absent as of html 4 let alone html5 besides xmp breaks it into new lines rather than keeping it inline, entities are what I what but when put into a textarea box, it breaks them and yes it's to be able to display code to a page viewer and I've tracked down the problem to when the entities gets put into the textarea tag.... what a pain Link to comment https://forums.phpfreaks.com/topic/199580-htmlentities-problem-with-a-mysql-database/#findComment-1047668 Share on other sites More sharing options...
primefalcon Posted April 24, 2010 Author Share Posted April 24, 2010 OK I have worked out a solution myself for now, I am posting it in case anyone else will find it useful when pulling the data from the database to display in the textarea tag I am running a preg_match to convert it into a custom non-entity tag like so $post = $row['post']; $patterns = array(); $patterns[0] = '/</'; $patterns[1] = '/>/'; $replacements = array(); $replacements[2] = "[lessthan]"; $replacements[1] = "[greaterthan]"; $post = preg_replace($patterns, $replacements, $post); then when it gets passed from the form to the php function I have handing the form submission I am simply doing the reverse $post = $_POST['post']; $patterns = array(); $patterns[0] = '/\[lessthan\]/'; $patterns[1] = '/\[greaterthan\]/'; $replacements = array(); $replacements[2] = "<"; $replacements[1] = ">"; $post = preg_replace($patterns, $replacements, $post); Link to comment https://forums.phpfreaks.com/topic/199580-htmlentities-problem-with-a-mysql-database/#findComment-1047686 Share on other sites More sharing options...
primefalcon Posted April 24, 2010 Author Share Posted April 24, 2010 Just updating since I have found a little more elegant solution, since it shows the entities as entities converting to show in the textarea <?php $post = $row['post']; $patterns = array(); $patterns[0] = '/</'; $patterns[1] = '/>/'; $replacements = array(); $replacements[2] = "<"; $replacements[1] = ">"; $post = preg_replace($patterns, $replacements, $post); ?> and then converting back into a proper entity before I throw it back in the database <?php $post = $_POST['post']; $patterns = array(); $patterns[0] = '/\&\;lt\;/'; $patterns[1] = '/\&\;gt\;/'; $replacements = array(); $replacements[2] = "<"; $replacements[1] = ">"; $post = preg_replace($patterns, $replacements, $post); ?> Link to comment https://forums.phpfreaks.com/topic/199580-htmlentities-problem-with-a-mysql-database/#findComment-1047700 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.