login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Handige scripts > htmlentities alleen op tekst uitvoeren


Reacties op het script htmlentities alleen op tekst uitvoeren

Offline  Stijn
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.

Offline  Grayen
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.

  1. <strong>test <<>> test</strong>


Dan zou de output met htmlentities..

  1. <strong>test <<>> test</strong>


.. maar met htmltagsonly zou je de output zoals hieronder aangegeven krijgen.

  1. <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.

Offline  Stijn
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.

Offline  Grayen
Gepost op: 07 juli 2007 - 09:37
PHP ver gevorderde



Ja, maar nu doe je bij het andere script dat ik had gepost het weer . Zie mijn reactie maar:

http://www.site...cties#6844

Offline  ikkedikke
Gepost op: 24 juli 2007 - 00:14
PHP expert



is dit niet wat omslachtig?
ik zou het volgende (ongeveer) doen:
  1. <?php
  2. $sString = htmlentities($sInput);
  3. foreach($aArrayVanElementen as $sElement)
  4. {
  5. $sString = str_replace (htmlentities('<'.$sElement.'>'),'<'.$sElement.'>', $sString);
  6. $sString = str_replace (htmlentities('</'.$sElement.'>'),'</'.$sElement.'>', $sString);
  7. }
  8. ?>

(om gecompliceerdere tags toe te staan moet je met reguliere expressies werken. maar het idee is duidelijk volgens mij.)

Offline  Grayen
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.

Offline  ikkedikke
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.
  1. <?php
  2. function htmltagsonly($sString)
  3. {
  4. $sString = htmlentities($sString);
  5. $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';
  6. $sString = preg_replace("~(&lt;/?(".$sElements.")(.*?)&gt;)~e",
  7. "html_entity_decode('\\1',ENT_QUOTES)",
  8. $sString);
  9. return $sString;
  10. }
  11. ?>

Offline  Grayen
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.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.064s