2015-06-12 5 views
0

Я работаю над небольшим побочным проектом, который форматирует журналы Skype, чтобы они выглядели красиво. Это здорово, но я столкнулся с некоторым раздражающим ударом на дороге.PHP: htmlspecialchars, но сохраняйте объекты HTML

Here - отличный (и несколько непристойный) пример того, что происходит. Как вы можете видеть, htmlspecialchars() также преобразует коды символов HTML в строку (потому что & становится &). Мне было интересно, есть ли способ позволить HTML-объектам по-прежнему оставаться через htmlspecialchars?

+1

Декодируйте свой HTML в текст (т. '&' становится '&'), а затем избегать его при печати. – Blender

+0

Разве это не функция htmlspecialchars? – mattrick

+0

['htmlspecialchars'] (http://php.net/htmlspecialchars) уже предоставляет параметр под названием' $ double_encode' (среди других флагов), чтобы избежать повторного кодирования. – mario

ответ

0

Вы можете использовать htmlentities(), если он решить ваши проблемы, еще хранить строку в одну переменную, которая возвращает из функций, а затем при печати этой строки

$foo = str_replace("&","&","$bar"); 
0

использовать эту функцию:

$string=$_POST[pname]; 
function seoUrl($string) { 
    //Lower case everything 
    $string = strtolower($string); 
    $string = str_replace('&',' ',$string); 
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string); 
    $string = preg_replace("/[\s-]+/", " ", $string); 
    $string = preg_replace("/[\s_]/", "-", $string); 
    return $string; 
} 
$sclean=seoUrl($string); 

вы можете использовать str_replace('&',' ',$string);вместо & использовать какой характер вы хотите удалить ...