Имея некоторый опыт работы с Linux, я привык к так называемым oneliners. Сегодня я хочу преобразовать некоторые HTML-мусор (сущности) в обычный текст с html_entity_decode
из основного PHP.
например
>> html_entity_decode( '>' )
'>'
По словам переводчика, это можно сделать с помощью -R
вариант;
Использование: php [опции] [-f] [-] [аргументы …] (…)
-Р <код> запустить PHP <код> для каждой строки ввода
(…)
Однако часто, когда я думаю, что PHP великолепен, это дает мне повод думать иначе (извините за отношение);
seq 10 | php -R 'echo fgets(STDIN);'
2
4
6
8
10
…как это часто бывает, постановка проблемы часто приводит к решению. Таким образом, я выяснил проблему, когда писал этот вопрос. Стандарт in закрыт, потому что PHP закрывает дескрипторы открытых файлов после завершения (см. освобождение ресурсов) и это выбрасывает каждую вторую строку из-за некоторых !соблазнительный детали реализации.
Спасибо за чтение, вы всегда можете сыграть в мой выбор, если хотите …
Часть о закрытии файловых дескрипторов автоматически выводится, потому что переменные выходят за рамки как главный выскочил из стека выполнения. Я до сих пор не нашел это на php.net.
Держите стандарт открытым, читайте все строки одним скриптом (iirc, как в аналогичном Perl-oneliner);
wget https://www.mountaingoatsoftware.com/agile/user-stories -O- |
html2text -nobs -style pretty -width 120 |
php -r 'while ($ii = fgets(STDIN))
echo html_entity_decode($ii);'
Других решений пока нет …