mb_substr($string,1,5); 函数截取字符串的问题

时间:2021-08-05 07:44:47

<?php

$dbh = @mysql_connect("localhost","root","pw");
if(!$dbh){die("error");}
@mysql_select_db("db", $dbh);
@mysql_query("set names 'gbk'");
$q = "SELECT * FROM cdb_threads where fid=20 order by dateline desc limit 7";
$rs = mysql_query($q, $dbh);
/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
$mystring = mb_substr($string,1,5);
echo $mystring;
/*----------------------*/
while($row = mysql_fetch_array($rs))
echo "<li><span> [$row[author]] </span><a href=http://bbs.----.com/viewthread.php?tid=$row[tid] target='_blank' title='$row[subject] $row[lastposter]最后回复'>$mystring</a></li>";

?>





请问我这里的mb_substr($string,1,5); 函数是哪里错了呀。  这样返回的是空的, $mystring 变量什么都没有 






<?php

mb_internal_encoding("gb2312");
$string = "我来测试一下,测试一下!";
$mystring = mb_substr($string,1,5);
echo $mystring;

?>




而这样就可以返回正确的截取。  


请问各位大侠。  错误在哪里呀?

9 个解决方案

#1


$mystring = mb_substr($string,1,5);
改成substr
$mystring = substr($string,1,5);

#2




<?php

$dbh = @mysql_connect("localhost","root","pw");
if(!$dbh){die("error");}
@mysql_select_db("db", $dbh);
@mysql_query("set names 'gbk'");
$q = "SELECT * FROM cdb_threads where fid=20 order by dateline desc limit 7";
$rs = mysql_query($q, $dbh);
/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
$mystring = substr($string,1,5);/*-----去掉mb_12.02---*/
/*-----------字符串截取函数-----------*/
while($row = mysql_fetch_array($rs))
echo "<li><span> [$row[author]] </span><a href=http://bbs.----.com/viewthread.php?tid=$row[tid] target='_blank' title='$row[subject] $row[lastposter]最后回复'>$mystring</a></li>";

?>



/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
$mystring = substr($string,1,5);/*-----去掉mb_12.02---*/
/*-----------字符串截取函数-----------*/

substr函数  去掉了前缀, 但是 又有新的报错了。


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\********\www\1.php on line 23


while($row = mysql_fetch_array($rs))

23 行的这个循环不知道有什么错误。 谢谢楼上的朋友帮助。

#3


lz确认一下phpinfo,
可能mb_string模块还没有安装。

#4


$string = $row[subject];
var_dump($string);//看看是否取出值来.
//意思是从第一位开始取,取出长度为5的串.
mb_substr($string,1,5);

#5


$string = $row['subject']; 

#6


这个函数是支持的。



回复4楼。

还是不行。

报错:
NULL 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\*******\www\1.php on line 24

24行的循环还是不行。   


代码如下:


<?php

$dbh = @mysql_connect("localhost","root","pw");
if(!$dbh){die("error");}
@mysql_select_db("db", $dbh);
@mysql_query("set names 'gbk'");
$q = "SELECT * FROM cdb_threads where fid=20 order by dateline desc limit 7";
$rs = mysql_query($q, $dbh);
/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
var_dump($string);//看看是否取出值来. 
$mystring = substr($string,1,5);/*-----去掉mb_12.02---*/
/*-----------字符串截取函数-----------*/
while($row = mysql_fetch_array($rs))
echo "<li><span> [$row[author]] </span><a href=http://bbs.----.com/viewthread.php?tid=$row[tid] target='_blank' title='$row[subject] $row[lastposter]最后回复'>$mystring</a></li>";

?>

#7


引用 6 楼 ImFantasy 的回复:
这个函数是支持的。


回复4楼。

还是不行。

报错:
NULL
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\*******\www\1.php on line 24

24行的循环还是不行。


代码如下:

PHP code<?php$dbh=@mysql_connect("localhost","root","pw");if(!$dbh){die("error");}
@mysql_select_db("db",$dbh);
@mysql_query("set names 'gbk'");$q="SELECT * FROM cdb_thre…


县确认一下mysql_connect和mysql_select_db后又没有错误,
你的问题出在数据库的连接/处理上

#8



如果不用字符截取。  一点问题都没有。

引用 7 楼 froole 的回复:
引用 6 楼 ImFantasy 的回复:
这个函数是支持的。 


回复4楼。 

还是不行。 

报错: 
NULL 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\*******\www\1.php on line 24 

24行的循环还是不行。 


代码如下: 

PHP code <?php$dbh=@mysql_connect("localhost","root","pw");if(!$dbh){die("error");} 
@mysql_select_db("db",$dbh); 
@mysql_query("se…

#9


感谢大家的热心帮助  。 我已经自己解决了。

#1


$mystring = mb_substr($string,1,5);
改成substr
$mystring = substr($string,1,5);

#2




<?php

$dbh = @mysql_connect("localhost","root","pw");
if(!$dbh){die("error");}
@mysql_select_db("db", $dbh);
@mysql_query("set names 'gbk'");
$q = "SELECT * FROM cdb_threads where fid=20 order by dateline desc limit 7";
$rs = mysql_query($q, $dbh);
/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
$mystring = substr($string,1,5);/*-----去掉mb_12.02---*/
/*-----------字符串截取函数-----------*/
while($row = mysql_fetch_array($rs))
echo "<li><span> [$row[author]] </span><a href=http://bbs.----.com/viewthread.php?tid=$row[tid] target='_blank' title='$row[subject] $row[lastposter]最后回复'>$mystring</a></li>";

?>



/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
$mystring = substr($string,1,5);/*-----去掉mb_12.02---*/
/*-----------字符串截取函数-----------*/

substr函数  去掉了前缀, 但是 又有新的报错了。


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\********\www\1.php on line 23


while($row = mysql_fetch_array($rs))

23 行的这个循环不知道有什么错误。 谢谢楼上的朋友帮助。

#3


lz确认一下phpinfo,
可能mb_string模块还没有安装。

#4


$string = $row[subject];
var_dump($string);//看看是否取出值来.
//意思是从第一位开始取,取出长度为5的串.
mb_substr($string,1,5);

#5


$string = $row['subject']; 

#6


这个函数是支持的。



回复4楼。

还是不行。

报错:
NULL 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\*******\www\1.php on line 24

24行的循环还是不行。   


代码如下:


<?php

$dbh = @mysql_connect("localhost","root","pw");
if(!$dbh){die("error");}
@mysql_select_db("db", $dbh);
@mysql_query("set names 'gbk'");
$q = "SELECT * FROM cdb_threads where fid=20 order by dateline desc limit 7";
$rs = mysql_query($q, $dbh);
/*-------------------------*/
mb_internal_encoding("gb2312");
$string = $row[subject];
var_dump($string);//看看是否取出值来. 
$mystring = substr($string,1,5);/*-----去掉mb_12.02---*/
/*-----------字符串截取函数-----------*/
while($row = mysql_fetch_array($rs))
echo "<li><span> [$row[author]] </span><a href=http://bbs.----.com/viewthread.php?tid=$row[tid] target='_blank' title='$row[subject] $row[lastposter]最后回复'>$mystring</a></li>";

?>

#7


引用 6 楼 ImFantasy 的回复:
这个函数是支持的。


回复4楼。

还是不行。

报错:
NULL
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\*******\www\1.php on line 24

24行的循环还是不行。


代码如下:

PHP code<?php$dbh=@mysql_connect("localhost","root","pw");if(!$dbh){die("error");}
@mysql_select_db("db",$dbh);
@mysql_query("set names 'gbk'");$q="SELECT * FROM cdb_thre…


县确认一下mysql_connect和mysql_select_db后又没有错误,
你的问题出在数据库的连接/处理上

#8



如果不用字符截取。  一点问题都没有。

引用 7 楼 froole 的回复:
引用 6 楼 ImFantasy 的回复:
这个函数是支持的。 


回复4楼。 

还是不行。 

报错: 
NULL 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\*******\www\1.php on line 24 

24行的循环还是不行。 


代码如下: 

PHP code <?php$dbh=@mysql_connect("localhost","root","pw");if(!$dbh){die("error");} 
@mysql_select_db("db",$dbh); 
@mysql_query("se…

#9


感谢大家的热心帮助  。 我已经自己解决了。