0

我尝试按功能更改字符

 <?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);

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

更多信息

脚本生成新值,这些值必须发送 Gall 函数以进行插入和显示替换标签并放置好,显示文本和标签替换

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

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

这里的函数显示了gal,函数执行的时候必须执行到str_replace来放文本,在替换标签之前继续,只有这个失败

PD:我尊重一些人,我来这里是为了发送我的问题,但是在很多情况下我写得不好,但英语对我来说不是母语,当然对于这里的所有人来说,在很多情况下,如果没有说得好,请尊重人们,这里的所有人都需要学习或需要帮助,明天我可以帮助其他人或这个人我,仅此而已,谢谢

问候

4

2 回答 2

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;
    ?> 

这是所有功能,你可以在这里看到,脚本使用了两件事,即查看画廊的功能和替换和显示画廊的脚本,但没有正常工作

脚本生成新值,这些值必须发送 Gall 函数以进行插入和显示替换标签并放置好,显示文本和标签替换

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

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

这里的函数显示了gal,函数执行的时候必须执行到str_replace来放文本,在替换标签之前继续,只有这个失败

PD:我尊重一些人,我来这里是为了发送我的问题,但是在很多情况下我写得不好,但英语对我来说不是母语,当然对于这里的所有人来说,在很多情况下,如果没有说得好,请尊重人们,这里的所有人都需要学习或需要帮助,明天我可以帮助其他人或这个人我,仅此而已,谢谢

问候

于 2012-11-28T19:49:20.560 回答
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但证明你会准确地捕捉到你需要的数据。

于 2012-11-28T20:55:03.880 回答