Проблема печати HTML-сущностей в кодеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема печати HTML-сущностей в коде

Сообщение Anonymous »

Я хочу создать очень простое окно для отображения фрагментов кода для моих пользователей.
Чтобы добиться этого, я добавил следующий код в свой файл function.php файл:

Код: Выделить всё

add_shortcode( 'test', 'shortcode_to_display_code' );

function shortcode_to_display_code( $atts, $content ) {
// Strip any remaining tags from user input (optional)
$code_content = strip_tags( $content );

// Set variables
$line_number = 1;
$output = '';

// Split code content by new lines, removing empty lines
$code_lines = array_filter( explode( "\n", $code_content ), function( $line ) {
return trim( $line ) !== '';
} );

// Loop through each line
foreach ( $code_lines as $line ) {

$line = htmlspecialchars($line, ENT_NOQUOTES, 'UTF-8');

$output .= '

' . $line_number . '

' . $line . '

';
$line_number++;
}

// Build final HTML structure
$final_html = '







Num
CODE

' . $output . '






';

// Return final HTML
return $final_html;
}

С помощью приведенного выше кода любой код, который я помещаю в шорткод:

Код: Выделить всё

[test]
// my code
[/test]
в моем сообщении WordPress отображается.
Однако вместо реальных символов (

Код: Выделить всё

e.g., < > / " ";
), выводятся их HTML-объекты.
Эта проблема вызвана строкой:

Код: Выделить всё

$line = htmlspecialchars($line, ENT_NOQUOTES, 'UTF-8');
в приведенном выше коде.
Если я удалю эту строку, код будет отображаться правильно, но функция htmlspecialchars() будет необходим для предотвращения атак XSS.
Учитывая вышеизложенное, существует ли лучший или более эффективный способ отобразить желаемый код без использования плагина?
Есть ли способ отобразить вывод кода, который я вставил в шорткод, без каких-либо манипуляций?

Подробнее здесь: https://stackoverflow.com/questions/787 ... n-the-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»