проблема специальных символов php - PullRequest
1 голос
/ 01 ноября 2010

У меня проблема со специальными символами в моем скрипте:

Это то, что я имею до сих пор:

$curlstrip = explode("&", $data);
$filename = substr(htmlEntities($curlstrip[5]), 2);

и если $data содержит какие-либо специальные символы, такие как ', который есть ', то вместо получения нужного мне фрагмента строки я получу только первую часть. Более подробный пример:

$data = "12er&sdsretdgsd&file=Chris ' 19 &blabla"

скрипт будет читать после Криса, как ', а $curlstrip[5] будет иметь другое значение.

Надежда достаточно ясна.

LE. Следуя этому примеру:

$data = "12er&sdsretdgsd&file=Chris ' 19 &blabla"
$curlstrip = explode("&", $data);
$curlstrip[0] = '12er';
$curlstrip[1] = 'sdsretdgsd';

но

$curlstrip[2] = 'file=Chris' instead of 'file=Chris ' 19'

и это потому, что 'читается как

'

Thx

Cristian.

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Попробуйте:

$curlstrip = explode("&", html_entity_decode($data));
$filename = substr(htmlEntities($curlstrip[5]), 2);

Поскольку я не могу воспроизвести вашу ошибку с учетом предоставленного кода, у меня есть догадка:

$data=str_replace("'","'", $data);
$curlstrip = explode("&", html_entity_decode($data));
$filename = substr(htmlEntities($curlstrip[5]), 2);

Если по какой-либо причине у вас есть && (два амперсанда) в $ data рядом друг с другом, это помешает функции разнесения.

0 голосов
/ 01 ноября 2010

Сделайте htmlentities последним, что вы вызываете в данных.

$filename = htmlentities(substr($curlstrip[5], 2));

Кроме того, есть функции для решения того, что вы делаете. parse_str создаст массив из строки запроса. parse_url может использоваться для извлечения строки запроса из URL.

...