我要创建自己的简码
在文本中,我可以输入简码,例如:
在此表达式中,您可以看到进入[]标记的短代码,我想显示没有此短代码的文本,并将其替换为gallery(使用php include并从shortcode中读取路径gallery)
我认为可以使用这种方法,就像您看到的那样,但是它们都不对我有用,但是这里的人可以告诉我一些事情或者给我任何可以帮助我的想法
<?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 (Jack)建议的,使用preg_replace_callback可以使操作更简单。看到他的答案。
关于php - 用php创建我自己的简码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13577206/