que - php string to html tags
Script Bash para convertir de entidades HTML a caracteres (6)
Estoy buscando una manera de convertir esto:
hello < world
a esto:
hello < world
Podría usar sed, pero ¿cómo se puede lograr esto sin usar expresiones regex crípticas?
Con perl:
cat foo.html | perl -MHTML::Entities -pe ''decode_entities($_);''
Con php desde la línea de comando:
cat foo.html | php -r ''while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);''
Esta respuesta se basa en: ¿ forma corta de escaparse de HTML en Bash? que funciona bien para capturar respuestas (usando wget
) en Stack Exchange y convertir HTML a caracteres ASCII normales:
sed ''s/ / /g; s/&//&/g; s/<//</g; s/>//>/g; s/"//"/g; s/#'//'"''"''/g; s/“//"/g; s/”//"/g;''
Editar 1: 7 de abril de 2017: se agregó la comilla doble a la izquierda y la doble a la derecha. Esto es parte de la secuencia de comandos bash que rastrea las respuestas de SE y las compara con los archivos de códigos locales aquí: Pregunte a Ubuntu - Code Version Control entre los archivos locales y las respuestas de Ask Ubuntu
Editar 26 de junio de 2017
El uso de sed
~ 3 segundos en convertir HTML a ASCII en un archivo de línea 1K de Ask Ubuntu / Stack Exchange. Como tal, me vi obligado a utilizar la función de búsqueda integrada de Bash y reemplazarlo por ~ 1 segundo de tiempo de respuesta.
Aquí está la función:
#-------------------------------------------------------------------------------
LineOut="" # Make global
HTMLtoText () {
LineOut=$1 # Parm 1= Input line
# Replace external command: Line=$(sed ''s/&//&/g; s/<//</g;
# s/>//>/g; s/"//"/g; s/'//'"''"''/g; s/“//"/g;
# s/”//"/g;'' <<< "$Line") -- With faster builtin commands.
LineOut="${LineOut// / }"
LineOut="${LineOut//&/&}"
LineOut="${LineOut//</<}"
LineOut="${LineOut//>/>}"
LineOut="${LineOut//"/''"''}"
LineOut="${LineOut//'/"''"}"
LineOut="${LineOut//“/''"''}" # TODO: ASCII/ISO for opening quote
LineOut="${LineOut//”/''"''}" # TODO: ASCII/ISO for closing quote
} # HTMLtoText ()
Intente recode ( página archivada , espejo de GitHub , página de Debian ):
$ echo ''<'' |recode html..ascii
<
Instalar en Linux y sistemas Unix-y similares:
$ sudo apt-get install recode
Instalar en Mac OS usando:
$ brew install recode
Una alternativa es canalizar a través de un navegador web, como por ejemplo:
echo ''!'' | w3m -dump -T text/html
Esto funcionó muy bien para mí en cygwin, donde descargar e instalar distribuciones es difícil.
Esta respuesta fue encontrada here
Una versión de Python 3.2+:
cat foo.html | python3 -c ''import html, sys; [print(html.unescape(l), end="") for l in sys.stdin]''
Usando xmlstarlet:
echo ''hello < world'' | xmlstarlet unesc