大家好,我在使用preg_replace方法替换字符串时,出现了一些问题,代码如下:
... ...
$strContent = "content_xNum" for( $iter=0;$iter<$num;$iter++ ) {
$pattern = '/xNum/';
$strIter = $iter;
if( $iter<10 && $num>10 ){
$strIter = "0".$iter;
}
$strContent = preg_replace($pattern, $strIter, $strContent);
writeUTF8($strContent,$fileName); }但经过替换的$strContent结果总是'content_0',而不是预期的值,这是怎么回事呀?请大家帮我看一下:)
... ...
$strContent = "content_xNum" for( $iter=0;$iter<$num;$iter++ ) {
$pattern = '/xNum/';
$strIter = $iter;
if( $iter<10 && $num>10 ){
$strIter = "0".$iter;
}
$strContent = preg_replace($pattern, $strIter, $strContent);
writeUTF8($strContent,$fileName); }但经过替换的$strContent结果总是'content_0',而不是预期的值,这是怎么回事呀?请大家帮我看一下:)
你的$num值是否大于10?
100 就是 content_00 就你给出的代码
$pattern = '/xNum/';
$strIter = $iter;
if( $iter<10 && $num>10 ){
$strIter = "0".$iter;
}
$str = preg_replace($pattern, $strIter, $strContent);
writeUTF8($str,$fileName); }你第一次已经把 $strContent改变,第二次无法匹配就原样返回了
$num = 100;
$pattern = '/xNum/';
for( $iter=0;$iter<$num;$iter++ ) {
$t = preg_replace($pattern, sprintf("%0".(strlen($num)-1)."d",$iter), $strContent);
echo $t."<br/>";
}
$strContent = "content_xNum";
$num = 11;
for($iter = 0; $iter < $num; $iter++ ) {
$pattern = '/xNum/';
$strIter = $iter;
if( $iter<10 && $num>10 ){
$strIter = "0".$iter;
}
echo $strIter."\r\n";
$str1 = preg_replace($pattern, $strIter, $strContent); // 返回值不能用$strContent,否则会将替换后的$strContent再次匹配,所以出错。
echo $str1."\r\n";
}
?>
当然都是0了。
function splitTable($DDLArr,$num,$fileName) { foreach($DDLArr as $tbName=>$strDDL) {
print "写入$tbName/n/r";
for( $iter=0;$iter<$num;$iter++ ) {
$pattern = '/xNum/';
$strIter = $iter;
if( $iter<10 && $num>10 ){
$strIter = "0".$iter;
}
$strDDL = preg_replace($pattern, $strIter, $strDDL);
echo $strIter;
echo $strDDL;
writeUTF8($strDDL,$fileName); }//end for
}//end foreach
}非常感谢!