|
|
|
| Добрый день.
Подскажите, пожалуйста, как получить урл страницы с параметрами, передающимися методом POST? | |
|
|
|
|
|
|
|
для: max90
(02.09.2013 в 15:23)
| | Переменные и их значения передаваемые методом POST в url не содержатся. Поучать их нужно из супер глобального массива $_POST. | |
|
|
|
|
|
|
|
для: confirm
(02.09.2013 в 15:28)
| | Ясно. Спасибо.
Тогда опишу проблему подробнее. Написал парсер статей с википедии. При конвертировании кодировки из утф-8 в ср1251 некоторые символы заменяются на знак вопроса (пример:大). Приходится редактировать большие объемы текста. Заметил что при пропускании через POST символ 大 меняется на хтмл код 大. Потому спрашивал про POST. Хотел весь текст пропускать через него:) Мож есть другой способ преобразования символов в HTML? | |
|
|
|
|
|
|
|
для: max90
(02.09.2013 в 15:41)
| | Что значит "при пропускании через POST"? Не выдумывайте, POST это метод передачи данных, к кодировке отношения не имеющий.
При конвертировании UTF в cp1251 и будет происходить замена символов на html представление, которые не содержит cp1251. При этом не все символы могут иметь представления, и не все браузеры отображают весь их существующий набор.
Не стоит конвертировать UTF в cp1251 содержание, которое гораздо шире cp1251.
Прочтите о ASCII и UTF-8. И храните данные в UTF, по крайней мере те, что никак не "влазят" в рамки ASCII. | |
|
|
|
|
|
|
|
для: confirm
(02.09.2013 в 16:23)
| | Чего выдумывать то? Можете сами проверить. иероглиф можете взять например тут http://ru.wikipedia.org/wiki/%D0%AF%D0%BF%D0%BE%D0%BD%D0%B8%D1%8F
код примерно такой
<?php
if( key($_POST['action']) == "1" ) {
$save_con = $_POST['save_con'];
$getsite = $save_con['getsite'];
var_dump($getsite); // получим string(16) "日本"
}else{
echo <<<HTML
<title>Addnews</title>
<form method="post" action="">
<table width="100%" border="0">
<tr>
<td width="22%"><p><strong>URL </strong></p></td>
<td><input name="save_con[getsite]" type="text" class="f_input" value="" size="77" />
</td>
</tr>
<tr>
<td></td>
<td><input class="buttons" type="submit" name="action[1]" value=" go" /></td></td>
</tr>
</table>
</form>
HTML;
}
?>
|
по конвертации
<?php
$str = mb_convert_encoding('ώ' , "Windows-1251", "UTF-8");
var_dump($str); // получим string(1) "?"
?>
|
UTF, к сожалению не подойдет, сайт на cp1251 | |
|
|
|
|
|
|
|
для: Добрый кот
(02.09.2013 в 17:01)
| | Это вы мне или автору?
Если мне, то прежде чем определять "язык" на котором будет вещать сайт, я сначала определюсь с тем о чем он "говорить будет", а не лечить потом головную боль.
Что касается POST и вашего примера, то не выдумывайте и вы - POST, это не конвертор кодировок, а представление (в нtml), это никак не переопределение кодировки. | |
|
|
|
|
|
|
|
для: confirm
(02.09.2013 в 17:07)
| | >Это вы мне или автору?
Это две мои учетки:) Сижу дома и на работе.
>Что касается POST и вашего примера, то не выдумывайте и вы - POST, это не конвертор кодировок, а представление (в нtml), это никак не переопределение кодировки.
Так я не говорю, что POST конвертирует кодировки. Мне необходимо представить символы в виде хтмл, что делает POST. Потому и спрашиваю | |
|
|
|
|
|
|
|
для: Добрый кот
(02.09.2013 в 19:42)
| | Поймите, хранить в базе в html представлении уже плохо, не удобно. А ведь Вики статьи, это широкий диапазон, и в зависимости от содержимого результат конвертирования может содержать не один, и не два, а много таких представлений.
Вот выполните вот такое:
<?
$tbl = '<table><tr>';
for($i=0; $i<20010; $i++) {
if($i && !($i % 15)) $tbl .= '</tr><tr>';
$tbl .= '<td>'.htmlspecialchars('&#'.$i.';').' - &#'.$i.';</td>';
}
echo $tbl.'</tr></table>';
|
Вы получите таблицу символов в html представлении. Откройте эту таблицу в различных браузерах. Сможете наблюдать, что гарантированно во всех браузерах отображаются символы входящие в диапазон ASCII, а вот дальше, типа псевдографики, графические символы и другие либо не отображаются в некоторых браузерах (квадратики или вопросы в место них), либо отображается отличное, чем в других браузерах.
То есть, если вы точно знаете, что конвертируете текст и при этом получаете мало огрехов типа "не отображает нужное 2-3 символа", еще можно как-то пренебречь этим. Но если это значительная часть текста исходного, то зачем это нужно, может подумать о переходе на UTF? Переконвертировать исходное в базах можно, статические тексты тоже можно, плохо, что и РНР скрипты придется перезаписать в UTF. Но зато и пользователи будут видеть то, что и должны, а не вопросы и другое не читаемое, ибо iconv не волшебник, большего что можно получить, он не в состоянии выдать. | |
|
|
|
|
|
|
|
для: confirm
(02.09.2013 в 20:19)
| | Ясно. Спасибо огромное за развернутый ответ.
Уже давно думал о переходе на UTF, т.к это далеко не единственная проблема связанная с кодировкой, все время приходилось костыли изобретать. | |
|
|
|