У меня есть строка, в которой могут появляться специальные символы, такие как !
или "
или &
или #
или @
, ....Как я могу конвертировать в строку
str = " Hello "XYZ" this 'is' a test & so *n @."
автоматически каждые специальные символы с их HTML-сущностями, чтобы я получил это:
str = " Hello " ;XYZ" ; this ' ;is' ; a test & ; so on @"
Я пытался
$str=HTML::Entities::encode_entities($str);
но он выполняет частичную работу: @
не преобразуется в @
;
РЕШЕНИЕ:
1) с вашей помощью (Квентин и vol7ron) Iпридумал это решение (1)
$HTML::Entities::char2entity{'@'} = '@';
$HTML::Entities::char2entity{'!'} = '!';
$HTML::Entities::char2entity{'#'} = '#';
$HTML::Entities::char2entity{'%'} = '%';
$HTML::Entities::char2entity{'.'} = '.';
$HTML::Entities::char2entity{'*'} = '*';
$str=HTML::Entities::encode_entities($str, q{@"%'.&#*$^!});
2) и я нашел более короткое (лучшее) решение (2) нашел его здесь :
$str=HTML::Entities::encode_entities($str, '\W');
\ W выполняет работу
@ von7ron с решением (1), вам нужно будет указать символы, которые вы хотите перевести, как Квентин , упомянутый ранее, даже еслиони находятся на столе перевода.