PHP htmlentities in textarea ausgeben

ZeroFlash

Lt. Junior Grade
Registriert
Jan. 2002
Beiträge
382
hallo

ich hab mir ein kleines tool geschrieben mit dem ich html sonderzeichen, also ö ü ä usw in ö ü ä usw umwandel.

funktioniert auch alles ganz toll.

nun möchte ich allerdings, das ganze wieder in der textarea ausgeben. doch daran scheiterts, weil es mir entweder geparst wird oder aber oberhalb von der textarea und nicht innerhalb ausgegeben wird.

wie kann ich es richtig realisieren?

hier mal noch n bissel code

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <link rel="stylesheet" type="text/css" href="styles.css"/>
    <title>Umlaute in HTML konvertieren</title>
</head>
<body>
<div id="distance"></div>
<div id="rahmen">
	<h1>&amp;UML;AUTE</h1><h2>formatieren</h2>
<?php	

// Variables

$feld = $_POST['feld'];	

// Functions

function form_umlaute () {
echo <<< EOT
<form method="post" action="test.php">
	<textarea name="feld" id="feld"></textarea>
	<input type="submit" value="format" class="button"/>
	<input type="reset" value="reset" class="button"/>
	<input type="hidden" value="1" name="abgeschickt"/>
</form>	
EOT;
}

// Exceptions

if (!isset($_POST['abgeschickt'])) {
	form_umlaute ();	
}
if (isset($_POST['abgeschickt'])) {
	if (!trim($_POST['feld'])) {
		echo "<form method=\"post\" action=\"test.php\">
			<textarea name=\"feld\" id=\"feld\"></textarea>
			<input type=\"submit\" value=\"format\" class=\"button\"/>
			<input type=\"reset\" value=\"reset\" class=\"button\"/>
			<input type=\"hidden\" value=\"1\" name=\"abgeschickt\"/>
			</form>";
	}
	else {
		$speicher = htmlentities("$feld");
		$feld = stripslashes("$speicher");
		$speicher = highlight_string ($feld);	
		echo "<form method=\"post\" action=\"test.php\">
			<textarea name=\"feld\" id=\"feld\">".htmlentities('$feld')."</textarea>
			<input type=\"submit\" value=\"format\" class=\"button\"/>
			<input type=\"reset\" value=\"reset\" class=\"button\"/>
			<input type=\"hidden\" value=\"1\" name=\"abgeschickt\"/>
			</form>";
	}
}
?>	
</div>
</body>
</html>
 
try this

PHP:
<?php $text = '123öäöeaösf<>'; ?>

<textarea name="feld" id="feld"><?= htmlentities(htmlentities($text)); ?></textarea>
<textarea name="feld" id="feld"><?= htmlentities($text); ?></textarea>


davon abgesehn kann ich dir mit ziemlicher sicherheit sagen, dass das was du machen willst garnicht nötig ist, und der Fehler viel eher zu suchen ist.

Was genau hast du vor? Wozu möchte man die HTML repräsentation von umlauten in einem textfeld haben? Ich kann mir keine Situation vorstellen wo das sinn machen kann, aber ich lass mich gerne eines besseren belehren ;)

edit: ich bin mir nicht ganz sicher ob ich genau das gemacht habe was du wolltest aber trotzdem einige sagen die du ZUERST machen solltest:
1) htmlentities($variable) und nicht htmlentities("$variable");
2) wenn du schon html mit echo ausgeben möchtest, dann mach es doch bitte so: echo '<a href="blub123"></a>';
und wenn variablen vorkommen echo '<a href="alsdkfj">'.$text.'</a>';
 
Zuletzt bearbeitet:
es geht darum, dass wenn du ne seite nur in nem editor schreibst, und nen text hast enthält der umlaute, welche umgewandelt werden müssen. wollt nur n kleines tool, welches die arbeit übernimmt und ich mir nur noch die formatierte ausgabe rauskopieren und im editor einfügen brauch.
 
Ok dafür kann man das in der Tat brauchen und es macht auch durchaus sinn. Jedoch Frage ich mich wofür du die webseite manuell in einem editor machen willst, wenn du doch php hast.. das erspart dir die ganze arbeit. Davon abgesehn versteht heute eh jeder browser die umlaute, wenn man sie direkt in den quellcode eingibt. Ist zwar nicht schön, aber das ist es ja im moment so oder so nicht ;)
 
PHP:
  function rep( $subject, $newline = true, $emptyvalue = '&nbsp;' )
  {
    if( empty( $subject ) ) return $emptyvalue;
    
    # simple replacement
    $search = array(
      '&',
      'ä', 'Ä',
      'ö', 'Ö',
      'ü', 'Ü',
      'ß',
      'µ',
      '¼', '½', '¾',
      '  ',
      '<', '>',
      '©', '(C)',
      '«', '»',
      '°',
      '±', '÷',
      '€',
      '"',
      '[bold]', '[italic]', '[underline]',
      '[/bold]', '[/italic]', '[/underline]',
      '[b]', '[i]', '[u]',
      '[/b]', '[/i]', '[/u]',
      '[arrow-up]', '[arrow-right]', '[arrow-down]', '[arrow-left]', '[arrow-left-right]', '[arrow-return]',
      '[arrow-double-up]', '[arrow-double-right]', '[arrow-double-down]', '[arrow-double-left]', '[arrow-double-left-right]',
      '[bullet]', '[minute]', '[fraction]',
      '[nl]'
    );
    $replace = array(
      '&amp;',
      '&auml;', '&Auml;',
      '&ouml;', '&Ouml;',
      '&uuml;', '&Uuml;',
      '&szlig;',
      '&micro;',
      '&frac14;', '&frac12;', '&frac34;',
      '&nbsp;&nbsp;',
      '&lt;', '&gt;',
      '&copy;', '&copy;',
      '&laquo;', '&raquo;',
      '&deg;',
      '&plusmn;', '&divide;',
      '&euro;',
      '&quot;',
      '<span class="bold">', '<span class="italic">', '<span class="underline">',
      '</span>', '</span>', '</span>',
      '<span class="bold">', '<span class="italic">', '<span class="underline">',
      '</span>', '</span>', '</span>',
      '&uarr;', '&rarr;', '&darr;', '&larr;', '&harr;', '&crarr;',
      '&uArr;', '&rArr;', '	&dArr;', '&lArr;', '&hArr;',
      '&bull;', '&prime;', '&frasl;',
      '<br />'
    );
    
    $subject = str_replace( $search, $replace, $subject );
    
    # BB Code
    $search = array(
      '\\[css="?([^]].*?)"?\\](.*?)\\[/css\\]', # [css="xyz"]xyz[/css]
      '\\[size="?([^]].*?)"?\\](.*?)\\[/size\\]' # [size="xyz"]xyz[/size]
    );
    $replace = array(
      '<span class="\\1">\\2</span>',
      '<span class="fsize\\1">\\2</span>'
    );
    
    for( $i = 0; $i < sizeof( $search ) && $i < sizeof( $replace ); $i++ )
      $subject = preg_replace( '#'.$search[$i].'#i', $replace[$i], $subject );
    
    return ($newline ? nl2br( $subject ) : $subject);
  }
 
allerdings...

aber darum gehts doch auch gar net
 
Unter ISO-8859-1 oder noch besser UTF-8 braucht man überhaupt kein htmlentities(), weil die Umlaute nicht maskiert werden müssen. Das wäre die noch bessere Variante :D
 
Zurück
Oben