gpt4 book ai didi

php - 用 php 创建我自己的简码

转载 作者:可可西里 更新时间:2023-11-01 12:35:01 27 4
gpt4 key购买 nike

我想创建自己的简码

在文本中我可以输入简码,例如:

The people are very nice , [gal~route~100~100] , the people are very nice , [ga2l~route2~150~150]

在此表达式中,您可以看到 [ ] 标签中的简码,我想显示没有此简码的文本并将其替换为画廊(使用 php 包含并从简码中读取路径画廊)

我想用这个方法,你可以往下看,但是它们都不适合我,但是这里的人可以告诉我一些事情或者给我任何可以帮助我的想法

 <?php
$art_sh_exp=explode("][",html_entity_decode($articulos[descripcion],ENT_QUOTES));

for ($i=0;$i<count($art_sh_exp);$i++) {

$a=array("[","]"); $b=array("","");

$exp=explode("~",str_replace ($a,$b,$art_sh_exp[$i]));


for ($x=0;$x<count($exp);$x++) { print
"".$exp[1]."-".$exp[2]."-".$exp[3]."-<br>"; }

} ?>

谢谢

最佳答案

我建议您使用正则表达式来查找所有出现的短代码模式。

它使用 preg_match_all (文档 here )找到所有出现的地方,然后简单 str_replace (文档 here)将转换后的简码放回字符串中

此代码中包含的正则表达式只是尝试将括号内的字符从 0 次匹配到无限次出现 []

$string = "The people are very nice , [gal~route~100~100] , the people are very nice , [ga2l~route2~150~150]";
$regex = "/\[(.*?)\]/";
preg_match_all($regex, $string, $matches);

for($i = 0; $i < count($matches[1]); $i++)
{
$match = $matches[1][$i];
$array = explode('~', $match);
$newValue = $array[0] . " - " . $array[1] . " - " . $array[2] . " - " . $array[3];
$string = str_replace($matches[0][$i], $newValue, $string);
}

结果字符串现在是

The people are very nice , gal - route - 100 - 100 , the people are very nice , ga2l - route2 - 150 - 150

分两个阶段解决问题

  • 找到所有出现的地方
  • 用新值替换它们

开发调试更简单。如果您想一次性更改您的短代码如何转换为 URL 或其他内容,这也会让事情变得更容易。

编辑: 按照 Jack 的建议,使用 preg_replace_callback会让事情变得更简单。查看他的回答。

关于php - 用 php 创建我自己的简码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com