PHP按函数替换字符

时间:2012-11-28 16:41:27

标签: php function preg-replace str-replace

我尝试按功能更改字符

 <?php
$string = "Hi everybody people [gal~images/articles~100~100~4]  here other imagen [gal~images/products~100~100~3]";

$regex = "/\[(.*?)\]/";
preg_match_all($regex, $string, $matches);

for($i=0; $i<count($matches[1]);$i++)
{
$match = $matches[1][$i];
$array = explode('~', $match);

//$newValuet="gal("".$array[1]."","".$array[2]."","".$array[3]."","".$array[4]."")";

$newValue="gal(".$array[1].",".$array[2].",".$array[3].",".$array[4].")";


$string = str_replace($matches[0][$i],$newValue,$string);

}

echo $string;
?>

这里的问题:

$newValue="gal(".$array[1].",".$array[2].",".$array[3].",".$array[4].")";


    $string = str_replace($matches[0][$i],$newValue,$string);

功能没有给出正确的结果我尝试不同的方法,但继续问题,请我看到所有功能,但没有得到这个工作,如果你能回答请给我一些修改这个代码,我可以理解,谢谢很多全部帮助

更多信息

该脚本生成新值,此值必须发送胆量函数用于插入和显示替换标签并放好,显示文本和标签替换

 $newValue="gal(".$array[1].",".$array[2].",".$array[3].",".$array[4].")";

 $string = str_replace($matches[0][$i],$newValue,$string);

这里函数显示gal,函数执行时必须执行到str_replace中才能放入文本,在替换标记之前继续,只有这个失败

PD:我尊重一些人,我来这里是为了发送我的问题,但在许多情况下写得很糟糕,但英语对我来说不是原生的,对于所有人来说,在许多情况下肯定会让人们尊重,如果说得不好,全部这里的人需要学习或需要帮助,明天我可以帮助其他人或这个人,没有更多的报酬,谢谢

问候

2 个答案:

答案 0 :(得分:0)

图库的功能

  <?php
    function gal($dire,$w_size,$h_size,$cols)
    {
    $n_images=0;

    $dir=opendir("$dire");
    while($file=readdir($dir))
    {
    if ($file!="." && $file!=".." && $file!="Thumbs.db" && $file!="index.html" && $file!=".htaccess" && $file!="config.dat")
    {
    $n_images++;
    $imagenes[]=$file;
    }

    }
    closedir($dir);

    $num_img="".$n_images."";
    $num_img_cols="".$cols."";
    $num_filas="".ceil($num_img/$num_img_cols)."";

    echo '<table width="10%" border="0" cellpadding="3" cellspacing="2" align="center">
    <tr> 
    <td colspan="'.$num_img_cols.'">&nbsp;</td>
    </tr><tr>';

    $x=1;

    for ($j=0;$j<$n_images;$j++)
    {
    print "<td align='center'>";

    //echo '<img src="'.$dire.'/'.$imagenes[$j].'" width="'.$w_size.'" height="'.$h_size.'">';

    print "<a href='".$dire."/".$imagenes[$j]."' class='highslide' onclick=\"return hs.expand(this,{slideshowGroup:'group1',align:'center'})\">";
    print '<img src="indexer_resizer.php?ruta_f='.$dire.'/&image='.$imagenes[$j].'&new_width='.$w_size.'&new_height='.$h_size.'" border="0" alt="Pulse para Ampliar" title="Pulse para Ampliar">
    </a>';

    if ($x%$num_img_cols==0)
    {
    print "</tr>";
    }
    $x++;
    }

    echo "</table>";
    }
    ?>

**Function for replace tags**

     <?php
    $string = "Hola todos os presento una nueva galeria  [galt~imagenes/articulos~100~100~4]  Aqui otra más [gal~imagenes/productos~100~100~3]";

    $regex = "/\[(.*?)\]/";
    preg_match_all($regex, $string, $matches);

    for($i=0; $i<count($matches[1]);$i++)
    {
    $match = $matches[1][$i];
    $array = explode('~', $match);

    //$newValuet="gal("".$array[1]."","".$array[2]."","".$array[3]."","".$array[4]."")";

    $newValue="gal(".$array[1].",".$array[2].",".$array[3].",".$array[4].")";


    $string = str_replace($matches[0][$i],$newValue,$string);

    }

    echo $string;
    ?> 

这是所有功能,你可以看到这里,脚本使用2个功能查看图库和脚本替换和显示图库,但没有正常工作

该脚本生成新值,此值必须发送胆量函数用于插入和显示替换标签并放好,显示文本和标签替换

 $newValue="gal(".$array[1].",".$array[2].",".$array[3].",".$array[4].")";

 $string = str_replace($matches[0][$i],$newValue,$string);

这里函数显示gal,函数执行时必须执行到str_replace中才能放入文本,在替换标记之前继续,只有这个失败

PD:我尊重一些人,我来这里是为了发送我的问题,但在许多情况下写得很糟糕,但英语对我来说不是原生的,对于所有人来说,在许多情况下肯定会让人们尊重,如果说得不好,全部这里的人需要学习或需要帮助,明天我可以帮助其他人或这个人,没有更多的报酬,谢谢

问候

答案 1 :(得分:0)

要捕获字符串的那些部分,请尝试:

$string = "Hi everybody people [gal~images/articles~100~100~4]  here other imagen [gal~images/products~100~100~3]";

preg_match_all('/\[(.+)\]/ismU, $string, $matches);

preg_match_all('/\[(\w+)\~([a-z0-9\/]+)\~(\d+)\~(\d+)\~(\d+)\]/ismU, $string, $matches);

最后一个导致$matches结构稍微复杂一点,但证明你可以准确地捕捉到你需要的数据。