2010-11-01 51 views
1

我有我的脚本中的特殊字符的问题:PHP的特殊字符问题

这是我到目前为止有:

$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,

克里斯蒂安。

+0

其中$数据来自哪里? – ipsum 2010-11-01 16:17:21

+0

你可以添加一些关于你在做什么的地方 - 数据来自哪里 - 以及你打算如何处理它($ data到哪里)? – 2010-11-01 16:20:23

+1

我无法更改$ data的格式,所以我不认为它来自哪里。谢谢。 – Chris19 2010-11-01 16:21:28

回答

1

尝试:

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

正如我不能复制你的错误给提供的,我有一个hunch-尝试代码:

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

如果出于某种原因,你有& &(二&符号)发生在$ data之后,这会干扰爆炸函数。

+0

@Ergo同样的事情不幸的.thx。 – Chris19 2010-11-01 16:54:49

+0

@Ergo同样的事情在第二次try.thanks。 – Chris19 2010-11-01 16:58:41

+0

嗯,使用你给出的代码 - 我不能复制问题:$ data =“12er&sdsretdgsd&file = Chris'19&blabla”; $ curlstrip = explode(“&”,$ data); print_r($ curlstrip); – SW4 2010-11-01 17:06:12

0

使性能成为数据调用的最后一件事。

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

除此之外,还有功能来处理你在做什么。 parse_str将从查询字符串中创建一个数组。 parse_url可用于从url中提取查询字符串。

+0

你是什么意思“让你成为你最后一次调用的数据”?谢谢。 – Chris19 2010-11-01 16:29:28

+0

同样的事情,我只得到$ curlstrip [5]的第一部分,在'之前。我用更多信息更新了我的问题。谢谢。 – Chris19 2010-11-01 16:37:23

+1

你不想解码,而不是编码字符?这会产生更多的&符号,而不是倒过来说撇号 – SW4 2010-11-01 17:10:39