Люди, пожалуйста помогите создать выражение для preg_replace. Задача следующая: юзер вводит ОАО "Газпром", эта фраза обрабатывается htmlspecialchars-ом, результат обработки ОАО \"Газпром\". Хочу preg_replace-ом либо удалить кавычки до htmlspecialchars, либо удалить обратные слешы после htmlspecialchars. Пишу: PHP: <? $_POST['heder']=preg_replace('[b]<">[/b]','',$_POST['heder']); $_POST['heder']=htmlspecialchars($_POST['heder']); ?> или PHP: <? $_POST['heder']=htmlspecialchars($_POST['heder']); $_POST['heder']=preg_replace('[b]<\>[/b]','',$_POST['heder']); ?> Организмом понимаю, что косяк в выделенных частях, а как правильно не знаю. Хэлп!
если узнать откуда это растет можно понять как это побороть: PHP: <? if (get_magic_quotes_gpc()) $_POST['heder'] = stripslashes($_POST['heder']);
а разве htmlspecialchars(); добавляет слеши? она преобразует спец символы в html эквивалент, addslashes(); добавляет символ косой черты.
PHP: <?php $string = 'ОАО "Газпром"'; $res = preg_replace('|["]|i','',$string); echo $res; --- $string = 'ОАО \"Газпром\"'; $res = preg_replace('|[\\\]|i','',$string); echo $res;
PHP: <?php set_magic_quotes_runtime(0); if (get_magic_quotes_gpc()) { $_GET = stripslashes_array($_GET); $_POST = stripslashes_array($_POST); $_COOKIE = stripslashes_array($_COOKIE); } function stripslashes_array($array) { foreach ($array as $k => $v) { if (is_array($v)) { $array[$k] = stripslashes_array($array[$k]); } else { $array[$k] = stripslashes($array[$k]); } } return $array; }