数组得值的奇怪问题 本帖最后由 xiachao2008 于 2012-03-31 10:04:12 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var_export这个数组 再贴出来 给出[content]的值,并说明你要得到什么 很可能符号的问题。建议在存放数组元素前,加上 htmlspecialchars();在取元素时,htmlspecialchars_decode(); 原数组是这样的<?php return array(0,array ( 'title' => '迅雷电视剧', 'encoding' => 'gbk', 'listlink' => '<div class=\\"operbox\\"><a class=\\"on\\" href=\\"[$ppvod]\\"', 'listpicstr' => '_src=\\"[$ppvod]\\"', 'listname' => '_src=\\"[$ppvod]\\"', 'replace' => array ( 'listname' => '<[^>]+>$$$', 'vodname' => '<[^>]+>$$$', 'actor' => '<[^>]+>$$$', 'director' => '<[^>]+>$$$', 'content' => '<[^>]+>$$$', 'vodpic' => '<[^>]+>$$$', 'continu' => '<[^>]+>$$$', 'area' => '<[^>]+>$$$', 'playtime' => '<[^>]+>$$$', 'grade' => '<[^>]+>$$$', 'url' => '<[^>]+>$$$', ), 'name' => '<strong class=\\"movieDetail_tt\\">[$ppvod]</strong>', 'actor' => '<li>[$ppvod]</a></li>', 'director' => '<p><strong>导演:</strong>[$ppvod]</p>', 'content' => '<div class=\\"box_con box_con_movieinfo\\">[$ppvod]<a target=\\"_blank\\"', 'pic' => '', 'continu' => '', 'area' => '<li>标签:[$ppvod]</li>', 'playtime' => '<p><strong>片长:</strong><span>[$ppvod]分钟</span></p>', 'grade' => '', 'language' => '<ul id=\\"ul_subLabel\\" class=\\"diversity_white_ul \\">[$ppvod]</ul>', 'year' => '<p><strong>上映:</strong>[$ppvod]</p>', 'urlname' => 'title=\\"[$ppvod]\\"', 'urllink' => '<a href=\\"[$ppvod]\\" title=', 'url' => '', 'submit' => '确定',)); 加了以后能调用啊: $a =" <div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\""; $b = htmlspecialchars($a); $c = array(123,$b,array($b)); print_r($c); /* -------- 输出 --------*/Array ( [0] => 123 [1] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank" [2] => Array ( [0] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank" ) ) 大哥,你这种在浏览器页面下看是正确的,但是在源码下看还是html原生态的嘛Array( [0] => 123 [1] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank" [2] => Array ( [0] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank" ))我的数组用途是正责匹配网页内容的。 $a =" <div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\""; $b = htmlspecialchars($a); $c = array(123,$b,array($b));$d = htmlspecialchars_decode($c[2][0]);echo "d-->>".$d."<br>";/*输出,浏览器界面已将标签解析*/d-->> ([\s\S]*?)/*源码*/d-->>[b] <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"<br>好吧,你要用那个值? $replace = xunleiReplace();$replace = htmlDecode($replace);echo "<pre>";print_r($replace['content']);exit(); function getrole($str){//规则替换 //$str = str_replace(array("\n","\r"),array("<nr/>","<rr/>"),strtolower($str)); $arr1 = array('?','"','(',')','[',']','.','/','*','||',); $arr2 = array('\?','\"','\(','\)','\[','\]','\.','\/','.*?','(.*?)',); //$str = str_replace(array("\n","\r"),array("<nr/>","<rr/>"),strtolower($str)); return str_replace('\[$ppvod\]','([\s\S]*?)',str_replace($arr1,$arr2,$str)); } function htmlDecode($replace){ foreach ( $replace as $key => $val){ if(is_array($val)){ foreach ( $val as $keys => $values){ $replace[$key][$keys] = htmlspecialchars_decode(getrole($values)); } }else { $replace[$key] = htmlspecialchars_decode(getrole($val)); } } return $replace; } function xunleiReplace(){ return array( 'title' => '迅雷电视剧', 'encoding' => 'gbk', 'listlink' => '<div class=\\"operbox\\"><a class=\\"on\\" href=\\"[$ppvod]\\"', 'listpicstr' => '_src=\\"[$ppvod]\\"', 'listname' => '_src=\\"[$ppvod]\\"', 'replace' => array ( 'listname' => '<[^>]+>$$$', 'vodname' => '<[^>]+>$$$', 'actor' => '<[^>]+>$$$', 'director' => '<[^>]+>$$$', 'content' => '<[^>]+>$$$', 'vodpic' => '<[^>]+>$$$', 'continu' => '<[^>]+>$$$', 'area' => '<[^>]+>$$$', 'playtime' => '<[^>]+>$$$', 'grade' => '<[^>]+>$$$', 'url' => '<[^>]+>$$$', ), 'name' => '<strong class=\\"movieDetail_tt\\">[$ppvod]</strong>', 'actor' => '<li>[$ppvod]</a></li>', 'director' => '<p><strong>导演:</strong>[$ppvod]</p>', 'content' => '<div class=\\"box_con box_con_movieinfo\\">[$ppvod]<a target=\\"_blank\\"', 'pic' => '', 'continu' => '', 'area' => '<li>标签:[$ppvod]</li>', 'playtime' => '<p><strong>片长:</strong><span>[$ppvod]分钟</span></p>', 'grade' => '', 'language' => '<ul id=\\"ul_subLabel\\" class=\\"diversity_white_ul \\">[$ppvod]</ul>', 'year' => '<p><strong>上映:</strong>[$ppvod]</p>', 'urlname' => 'title=\\"[$ppvod]\\"', 'urllink' => '<a href=\\"[$ppvod]\\" title=', 'url' => '', 'submit' => '确定', ); }你的方法我试了,但是我在数组里操作的时候,还是不行啊,还是取不值,还是少了一部份??可以帮我看看吗??看来问题是出在数组上。但是我以经不知道从何下手找这个数组错误了。 用你的代码打印出的结果:$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\"。提早截断了额。加个贪婪标识试试 $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\"这两个里面你要用那个值?还是一个都没有? 同样的源码,我们输出的值不样给。我输出的是<div class=\"box_con box_con_movieinfo\">([\s\S]*?) 在ecshop模板中,include file的问题? 本人学习PHP已经有一个月,想请教一下大家一些问题 php与jsp cookie加密解密问题,急请大家帮忙 如何用PHP实现对某个数据表字段的增删改啊? 新人求助,跨页面传值问题! 数据批量导出并合并 [代朋友招个人]PHP,北京,上地,5-6K {加急电报}php分页的问题!!! 在一张PHP页面中分别要连接到多台DB服务器获取数据,如何处理比较理想? phpstorm xdebug进了断点但是无法看到相关信息 求解 请问php 能将整个目录上传吗?google 抽疯了
建议在存放数组元素前,加上 htmlspecialchars();
在取元素时,htmlspecialchars_decode();
<?php return array(0,array (
'title' => '迅雷电视剧',
'encoding' => 'gbk',
'listlink' => '<div class=\\"operbox\\"><a class=\\"on\\" href=\\"[$ppvod]\\"',
'listpicstr' => '_src=\\"[$ppvod]\\"',
'listname' => '_src=\\"[$ppvod]\\"',
'replace' =>
array (
'listname' => '<[^>]+>$$$',
'vodname' => '<[^>]+>$$$',
'actor' => '<[^>]+>$$$',
'director' => '<[^>]+>$$$',
'content' => '<[^>]+>$$$',
'vodpic' => '<[^>]+>$$$',
'continu' => '<[^>]+>$$$',
'area' => '<[^>]+>$$$',
'playtime' => '<[^>]+>$$$',
'grade' => '<[^>]+>$$$',
'url' => '<[^>]+>$$$',
),
'name' => '<strong class=\\"movieDetail_tt\\">[$ppvod]</strong>',
'actor' => '<li>[$ppvod]</a></li>',
'director' => '<p><strong>导演:</strong>[$ppvod]</p>',
'content' => '<div class=\\"box_con box_con_movieinfo\\">[$ppvod]<a target=\\"_blank\\"',
'pic' => '',
'continu' => '',
'area' => '<li>标签:[$ppvod]</li>',
'playtime' => '<p><strong>片长:</strong><span>[$ppvod]分钟</span></p>',
'grade' => '',
'language' => '<ul id=\\"ul_subLabel\\" class=\\"diversity_white_ul \\">[$ppvod]</ul>',
'year' => '<p><strong>上映:</strong>[$ppvod]</p>',
'urlname' => 'title=\\"[$ppvod]\\"',
'urllink' => '<a href=\\"[$ppvod]\\" title=',
'url' => '',
'submit' => '确定',
));
$b = htmlspecialchars($a);
$c = array(123,$b,array($b));
print_r($c);
/* -------- 输出 --------*/
Array ( [0] => 123
[1] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"
[2] => Array ( [0] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank" ) )
(
[0] => 123
[1] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"
[2] => Array
(
[0] => <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"
))
我的数组用途是正责匹配网页内容的。
$a =" <div class=\"box_con box_con_movieinfo\">([\s\S]*?)<a target=\"_blank\"";
$b = htmlspecialchars($a);
$c = array(123,$b,array($b));$d = htmlspecialchars_decode($c[2][0]);
echo "d-->>".$d."<br>";
/*输出,浏览器界面已将标签解析*/
d-->>
([\s\S]*?)
/*源码*/
d-->>[b] <div class="box_con box_con_movieinfo">([\s\S]*?)<a target="_blank"<br>好吧,你要用那个值?
$replace = xunleiReplace();
$replace = htmlDecode($replace);
echo "<pre>";print_r($replace['content']);exit(); function getrole($str){//规则替换
//$str = str_replace(array("\n","\r"),array("<nr/>","<rr/>"),strtolower($str));
$arr1 = array('?','"','(',')','[',']','.','/','*','||',);
$arr2 = array('\?','\"','\(','\)','\[','\]','\.','\/','.*?','(.*?)',);
//$str = str_replace(array("\n","\r"),array("<nr/>","<rr/>"),strtolower($str));
return str_replace('\[$ppvod\]','([\s\S]*?)',str_replace($arr1,$arr2,$str));
}
function htmlDecode($replace){
foreach ( $replace as $key => $val){
if(is_array($val)){
foreach ( $val as $keys => $values){
$replace[$key][$keys] = htmlspecialchars_decode(getrole($values));
}
}else {
$replace[$key] = htmlspecialchars_decode(getrole($val));
}
}
return $replace;
}
function xunleiReplace(){
return array(
'title' => '迅雷电视剧',
'encoding' => 'gbk',
'listlink' => '<div class=\\"operbox\\"><a class=\\"on\\" href=\\"[$ppvod]\\"',
'listpicstr' => '_src=\\"[$ppvod]\\"',
'listname' => '_src=\\"[$ppvod]\\"',
'replace' =>
array (
'listname' => '<[^>]+>$$$',
'vodname' => '<[^>]+>$$$',
'actor' => '<[^>]+>$$$',
'director' => '<[^>]+>$$$',
'content' => '<[^>]+>$$$',
'vodpic' => '<[^>]+>$$$',
'continu' => '<[^>]+>$$$',
'area' => '<[^>]+>$$$',
'playtime' => '<[^>]+>$$$',
'grade' => '<[^>]+>$$$',
'url' => '<[^>]+>$$$',
),
'name' => '<strong class=\\"movieDetail_tt\\">[$ppvod]</strong>',
'actor' => '<li>[$ppvod]</a></li>',
'director' => '<p><strong>导演:</strong>[$ppvod]</p>',
'content' => '<div class=\\"box_con box_con_movieinfo\\">[$ppvod]<a target=\\"_blank\\"',
'pic' => '',
'continu' => '',
'area' => '<li>标签:[$ppvod]</li>',
'playtime' => '<p><strong>片长:</strong><span>[$ppvod]分钟</span></p>',
'grade' => '',
'language' => '<ul id=\\"ul_subLabel\\" class=\\"diversity_white_ul \\">[$ppvod]</ul>',
'year' => '<p><strong>上映:</strong>[$ppvod]</p>',
'urlname' => 'title=\\"[$ppvod]\\"',
'urllink' => '<a href=\\"[$ppvod]\\" title=',
'url' => '',
'submit' => '确定',
); }
你的方法我试了,但是我在数组里操作的时候,还是不行啊,
还是取不值,还是少了一部份??可以帮我看看吗??
看来问题是出在数组上。但是我以经不知道从何下手找这个数组错误了。
$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\"。提早截断了额。加个贪婪标识试试
$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\"这两个里面你要用那个值?还是一个都没有?
我输出的是
<div class=\"box_con box_con_movieinfo\">([\s\S]*?)