读书人

数组得值的奇怪有关问题

发布时间: 2012-05-27 05:42:30 作者: rapoo

数组得值的奇怪问题

PHP code
、Array(    [title] => 迅雷电视剧    [encoding] => gbk    [listlink] => <div class=\"operbox\"><a  class=\"on\" href=\"([\s\S]*?)\"    [listpicstr] => _src=\"([\s\S]*?)\"    [listname] => _src=\"([\s\S]*?)\"    [replace] => Array        (            [listname] => <\[^>\]+>$$$            [vodname] => <\[^>\]+>$$$            [actor] => <\[^>\]+>$$$            [director] => <\[^>\]+>$$$            [content] => <\[^>\]+>$$$            [vodpic] => <\[^>\]+>$$$            [continu] => <\[^>\]+>$$$            [area] => <\[^>\]+>$$$            [playtime] => <\[^>\]+>$$$            [grade] => <\[^>\]+>$$$            [url] => <\[^>\]+>$$$        )    [name] => <strong class=\"movieDetail_tt\">([\s\S]*?)<\/strong>    [actor] => <li>([\s\S]*?)<\/a><\/li>    [director] => <p><strong>导演:<\/strong>([\s\S]*?)<\/p>    [content] =><div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\"    [pic] =>     [continu] =>     [area] => <li>标签:([\s\S]*?)<\/li>    [playtime] => <p><strong>片长:<\/strong><span>([\s\S]*?)分钟<\/span><\/p>    [grade] =>     [language] => <ul id=\"ul_subLabel\" class=\"diversity_white_ul \">([\s\S]*?)<\/ul>    [year] => <p><strong>上映:<\/strong>([\s\S]*?)<\/p>    [urlname] => title=\"([\s\S]*?)\"    [urllink] => <a href=\"([\s\S]*?)\" title=    [url] =>     [submit] => 确定)


上面那一个数组,我要得到[content] 的值,但是只能得到一部分
<div class=\"box_con box_con_movieinfo\">([\s\S]*?)
后一部份无法得到。
请问一下是什么原因呢


[解决办法]
var_export这个数组 再贴出来
[解决办法]
你是怎么传的。又是怎么得的?
[解决办法]
给出[content]的值,并说明你要得到什么
[解决办法]
很可能符号的问题。
建议在存放数组元素前,加上 htmlspecialchars();
在取元素时,htmlspecialchars_decode();
[解决办法]
你是怎么看见你只获取了部分的啊?是不是直接输出,看的页面效果啊?
[解决办法]
加了以后能调用啊:
PHP code
 $a ="[b] <div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\"[/b]"; $b = htmlspecialchars($a); $c = array(123,$b,array($b)); print_r($c); /* -------- 输出 --------*/Array ( [0] => 123 [1] => [b] <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"[/b] [2] => Array ( [0] => [b] <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"[/b] ) )
[解决办法]
PHP code
 $a ="[b] <div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\"[/b]"; $b = htmlspecialchars($a); $c = array(123,$b,array($b));$d = htmlspecialchars_decode($c[2][0]);echo "d-->>".$d."<br>";/*输出,浏览器界面已将标签解析*/d-->>[b] ([\s\S]*?)/*源码*/d-->>[b] <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"[/b]<br> 


[解决办法]
用你的代码打印出的结果:

PHP code
$replace = xunleiReplace();$replace = htmlDecode($replace);echo "<pre>";print_r($replace['content']);exit();/*输出*/([\s\S]*?)<a target=\"_blank\"/*源码*/<pre><div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\"
[解决办法]
不懂!
[解决办法]
是不是从
<div class=\"box_con box_con_movieinfo\">到<a target=\"_blank\"
之间出现了<a target=\"_blank\"。提早截断了额。加个贪婪标识试试
[解决办法]
PHP code
$replace = xunleiReplace();/* 1 */print_r($replace['content']);echo"<br>";//输出//<div class=\"box_con box_con_movieinfo\">[$ppvod]<a target=\"_blank\"//源码//<div class=\"box_con box_con_movieinfo\">[$ppvod]<a target=\"_blank\"$replace = htmlDecode($replace);/* 2 */print_r($replace['content']);exit();//输出//([\s\S]*?)<a target=\"_blank\"//源码//<div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\"
[解决办法]
那可能是你其他嵌套的代码的漏洞,检查在哪调用的这些函数,是否嵌套在循环中?或者多加了一些规则之类的。
[解决办法]
到现在为止,只有一个人知道你在做什么
[解决办法]
那简单啊,将和该函数及其调用代码先删除或保存到其它地方,简化你的代码,再慢慢分析
[解决办法]
跟楼上说的,先把所有代码都去掉,只保留去数组的方法,如果还是不能调试,就把数组输出,然后把输出的数组转成静态数组,然后去取静态数组中的值,这样应该能把问题排除出来,既然存在数组中,应该是可以取出来的,不然也不可能存到数组中

读书人网 >PHP

热点推荐