【发布时间】:2016-04-20 18:51:12
【问题描述】:
我有一个字符串包含我想用数组值替换的简码假设如果一个字符串中有 2 个不同的名称我想用匹配的数组值替换即array('pizza', 'fruit'); 用于替换为@987654322 @
所以[name='apple'] 被替换为水果
和[name='bread'] 被替换为披萨
在我当前的代码中,当放置是按放置值的顺序时,它会完美替换,但是当我切换放置在数组中的单词时,它会按照数组序列的顺序替换
$content = "Hello world this is a lorem ipsum text [shortcode name='generate'] this is used for some [shortcode id='2' name='corusel'] dummy words";
preg_match_all("/\[(.*?)\]/", $content, $matches);
$values = array();
foreach($matches[1] as $match) {
if(is_array($match)) {
foreach($match as $value) {
echo $values = str_replace($match, "[$match]", $match);
$value2 = explode(" ", $match);
echo "<br />";
}
} else {
$values[] = str_replace($match, "[$match]", $match);
$value2 = explode(" ", $match);
$value3 = explode("=", $value2[1]);
if(isset($value2[2])) {$value4 = explode("=", $value2[2]);}
$val1 = str_replace("'", "", $value3[1]);
if(isset($value4[1])) {$val2 = str_replace("'", "", $value4[1]);}
if(isset($val2)){$val2;}
echo "<br />";
}
}
$text = array('corusel', 'generate');
print_r($values);
echo "<br />";
echo str_replace($values, $text, $content);
输出:
数组 ( [0] => [简码名称='generate'] [1] => [简码 id='2' name='corusel'] ) 你好世界,这是一个 lorem ipsum text corusel this 用于一些生成虚拟词
corusel 正在替换 generate 这是错误的,它应该替换 corusel,并且当我切换位置时它应该完美地工作时,应该用 generate 替换 generate
【问题讨论】:
-
要替换的值是否在
id或name中找到? -
值被名称替换
-
那么
[shortcode id='generate']什么都不做?