Reacties op het script htmlentities alleen op tekst uitvoeren
|
Gepost op: 06 juli 2007 - 18:01 |
|
|
|
PHP expert
|
Je wilt dus gewoon XML tags in entities omzetten.... Ik snap het nut hier echt niet van. Als je de html tags niet in entities wilt gebruik dan die functie niet. |
|
|
|
Gepost op: 06 juli 2007 - 19:23 |
|
|
|
PHP ver gevorderde
|
Citaat: Je wilt dus gewoon XML tags in entities omzetten.... Ik snap het nut hier echt niet van.
ehm.. waar slaat die zin op?! Alleen de titel maakt al duidelijk dat het script htmlentities ALLEEN op tekst uitvoert. Jij denkt waarschijnlijk te simpel :S. Stel je hebt een string zoals hieronder.
<strong>test <<>> test</strong>
<strong>test <<>> test</strong>
Dan zou de output met htmlentities..
<strong>test <<>> test</strong>
<strong>test <<>> test</strong>
.. maar met htmltagsonly zou je de output zoals hieronder aangegeven krijgen.
<strong>test <<>> test</strong>
<strong>test <<>> test</strong>
Je kunt moeilijk zeggen als je htmlentities wilt uitvoeren op een string waarin html en tekst staat, en je de tags in stand wilt houden, dan doe ik het maar niet. Je zou dit bijvoorbeeld nodig hebben bij een wysiwyg editor als iemand vreemde tekens in zijn tekst plaats, die niet automatisch door de wysiwyg editor worden omgezet. Dan wil je toch die tekens omzetten naar entities, maar je wilt graag de tags in stand houden. Dat zou onmogelijk zijn, tenzij je daarvoor een functie hebt geschreven, zoals ik dus heb gemaakt. Doel nu duidelijk .
Ik ben teleurgesteld in het feit, dat een admin zo snel een oordeel velt, terwijl hij het script niet eens heeft getest of goed heeft bekeken. |
|
|
|
Gepost op: 06 juli 2007 - 22:51 |
|
|
|
PHP expert
|
Citaat: Ik ben teleurgesteld in het feit, dat een admin zo snel een oordeel velt, terwijl hij het script niet eens heeft getest of goed heeft bekeken. Hoef je niet, ik vond het alleen raar klinken maar heb het getest en zie nu wat je bedoeld. |
|
|
|
Gepost op: 07 juli 2007 - 09:37 |
|
|
|
PHP ver gevorderde
|
|
|
|
Gepost op: 24 juli 2007 - 00:14 |
|
|
|
PHP expert
|
is dit niet wat omslachtig?
ik zou het volgende (ongeveer) doen:
<?php
$sString = htmlentities($sInput);
foreach($aArrayVanElementen as $sElement)
{
$sString = str_replace (htmlentities('<'.$sElement.'>'),'<'.$sElement.'>', $sString);
$sString = str_replace (htmlentities('</'.$sElement.'>'),'</'.$sElement.'>', $sString);
}
?>
<?php foreach($aArrayVanElementen as $sElement) { } ?>
(om gecompliceerdere tags toe te staan moet je met reguliere expressies werken. maar het idee is duidelijk volgens mij.) |
|
|
|
Gepost op: 24 juli 2007 - 13:00 |
|
|
|
PHP ver gevorderde
|
Vind ik zelf wel mee vallen. Het is namelijk geen super ingewikkeld script en ook weer niet gigantisch groot. Jouw manier van aanpak is een idee, waar ik zelf nog niet op was gekomen, maar ik vind persoonlijk om alles met reguliere expressies proberen op te lossen even moeilijk. Daarnaast zou werken met reguliere expressies een veel zwaardere functie worden. |
|
|
|
Gepost op: 24 juli 2007 - 16:30 |
|
|
|
PHP expert
|
Dit is het alternatief voor met reguliere expressies. Mijns inziens is dit een stuk duidelijker. Voor de beginner niet compleet te begrijpen maar ik denk dat iedereen die er een beetje kaas van gegeten heeft, wel ongeveer kan zeggen wat iedere regel doet.
Er moet wel bij gezegd worden dat dit ongeveer 2 keer zo langzaam is.
<?php
function htmltagsonly($sString)
{
$sString = htmlentities($sString);
$sElements = 'blockquote|optgroup|noscript|colgroup|textarea|fieldset|acronym|caption|address|legend|script|strong|option|button|select|object|style|tfoot|thead|table|title|tbody|label|param|input|small|cite|abbr|head|samp|span|font|code|html|body|base|link|form|meta|area|big|pre|sup|sub|map|bdo|del|ins|var|div|img|dfn|kbd|col|dl|dt|h6|h2|h4|dd|h1|tt|h3|em|td|li|th|h5|ol|hr|tr|ul|br|p|i|q|a|b';
$sString = preg_replace("~(</?(".$sElements.")(.*?)>)~e",
"html_entity_decode('\\1',ENT_QUOTES)",
$sString);
return $sString;
}
?>
<?php function htmltagsonly($sString) { $sElements = 'blockquote|optgroup|noscript|colgroup|textarea|fieldset|acronym|caption|address|legend|script|strong|option|button|select|object|style|tfoot|thead|table|title|tbody|label|param|input|small|cite|abbr|head|samp|span|font|code|html|body|base|link|form|meta|area|big|pre|sup|sub|map|bdo|del|ins|var|div|img|dfn|kbd|col|dl|dt|h6|h2|h4|dd|h1|tt|h3|em|td|li|th|h5|ol|hr|tr|ul|br|p|i|q|a|b'; $sString = preg_replace("~(</?(".$sElements.")(.*?)>)~e", "html_entity_decode('\\1',ENT_QUOTES)", $sString); return $sString; } ?>
|
|
|
|
Gepost op: 24 juli 2007 - 18:02 |
|
|
|
PHP ver gevorderde
|
Bedankt voor het alternatief . Ik zal hem erbij zetten, met je beschrijving erbij. |
|
|
Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom. |
|
|
|