好吧,这会很奇怪,但我需要它
我试图得到字符数之间的一些特定引号之间的一大行代码“。基本上,我需要能够得到所有之间的第3引文之间的第5引文在结尾。
下面是一个例子
a:2:{s:10:"categories";s:5758:"...........";s:5:"posts";s:6:"a:0:{}";}我需要知道所有句号中的字符数是多少。实际上有代码代替了这些句点。
因为有11个句点,所以我的字符数将是11个。唯一一致的东西是这个引号,所以我需要以它为基础。
任何帮助都会很棒。
这是我的密码。我基本上是在创建代码和添加一些自定义标签。在取消序列化代码之前,我尝试过先序列化代码,但这似乎不起作用。
<?
$thisisit .= 'a:2:{s:10:"categories";s:5481:"a:40:{';
include('connect.php');
$sql = "SELECT * FROM wp_terms ORDER BY term_id ASC LIMIT 40";
$result = mysql_query($sql);
$count = 0;
while($row = mysql_fetch_array($result)) {
$name = $row['name'];
$charactercount = strlen($name);
$term_id = $row['term_id'];
$thisisit .= 'i:'.$count.';a:2:{s:11:"filter_name";s:20:"add_keyword_category";s:11:"filter_args";a:7:{s:12:"filter_value";s:'.$charactercount.':"'.strtolower($name).'";s:19:"filter_search_title";s:1:"1";s:21:"filter_search_excerpt";i:0;s:21:"filter_search_content";s:1:"1";s:21:"faf_filter_categories";a:1:{i:4;s:3:"'.$term_id.'";}s:17:"filter_match_word";i:0;s:17:"filter_match_case";i:0;}}';
//echo "<br><br>";
$count++;
}
$thisisit .= '}";s:5:"posts";s:6:"a:0:{}";}';
$array = unserialize($thisisit);
echo strlen($array['categories']);
?>发布于 2013-10-04 06:32:29
实际上,这些数据看起来是序列化的。正确的解决方案是使用php函数unserialize。
然后,根据您的结构,了解该元素的长度:
strlen(unserialize($data)['categories']);如果运行旧的php,则需要将结果存储在临时变量中:
$array = unserialize($data);
echo strlen($array['categories']);如果您的序列化数据已损坏(如“未从正确执行serialize__中接收到”),正如您的示例所显示的那样,我们可以返回到原来的任务:
在开始的第三次报价到结尾的第五次报价之间得到所有的信息
实现这一目标的最简单方法是:
implode("'", array_slice(explode("'", $data), 3, -5));https://stackoverflow.com/questions/19174762
复制相似问题