Php 用图像替换字符串
我正在寻找一种用图像替换某些字符串的方法。所有字符串都包含在{}中,当代码看到[}时,将读取其中的内容,它等于什么将成为特定的图像。我不知道如何实现这一点,希望有人能给我举个例子 下面是我的例子,可以更好地解释:Php 用图像替换字符串,php,xml,wordpress,Php,Xml,Wordpress,我正在寻找一种用图像替换某些字符串的方法。所有字符串都包含在{}中,当代码看到[}时,将读取其中的内容,它等于什么将成为特定的图像。我不知道如何实现这一点,希望有人能给我举个例子 下面是我的例子,可以更好地解释: {1} is replaced with an image 因此,当代码看到{}时,它将被激活。现在,为了不干扰代码的其他部分,它被限制为1个字符,并且仅限于某些字符。这是为了使魔术卡施放成本更具体。因此,它也将受到限制 B、 例如,U、R、G、W、X、T、1-99 ========
{1} is replaced with an image
因此,当代码看到{}时,它将被激活。现在,为了不干扰代码的其他部分,它被限制为1个字符,并且仅限于某些字符。这是为了使魔术卡施放成本更具体。因此,它也将受到限制
B、 例如,U、R、G、W、X、T、1-99
===============================
那么……像这样的事情
$image_string = '{R}{R}{R}{3}
$Mana_symbol ='BURGWXT1-99';
$output = preg_replace_all('/\{([' . $Mana_symbol. '])\}/', '<img src="\1.png"/>', $string);
switch ($output)
{
case ('B'):
$mana = '<img src = "black_mana.png"/>';
break;
case ('U'):
$mana = '<img src = "blue_mana.png"/>';
break;
case ('G'):
$mana = '<img src = "green_mana.png"/>';
break;
case ('R'):
$mana = '<img src = "red_mana.png"/>';
break;
case ('W'):
$mana = '<img src = "white_mana.png"/>';
break;
case ('1'):
$mana = '<img src = "1_colorless_mana.png"/>';
break;
case ('2'):
$mana = '<img src = "2_colorless_mana.png"/>';
break;
case ('3'):
$mana = '<img src = "3_colorless_mana.png"/>';
break;
....etc....
$image_string='{R}{R}{3}
$Mana_symbol='BURGWXT1-99';
$output=preg\u replace\u all('/\{(['.$Mana\u symbol.])\}/',''.$string);
交换机(输出)
{
案例(“B”):
$mana='';
打破
案例(“U”):
$mana='';
打破
格('G'):
$mana='';
打破
格('R'):
$mana='';
打破
案例(“W”):
$mana='';
打破
案例(“1”):
$mana='';
打破
案例(“2”):
$mana='';
打破
案例(“3”):
$mana='';
打破
等
我是否应该使用preg_replace_all,因为会有一些具有多个实例?例如,上面的$image_字符串将替换字符串中匹配的所有实例?下面是一个使用正则表达式的示例(请参阅): 假设您的图像被称为标签的
x.png
{x}:
<?php
$string = '{1} is replaced with an image';
// Use a regular expression
// The codes below will be placed into a character class
$validCodes = 'BURGWXT0-9';
// This array contains the image transforms
$images = array(
'B' => 'black_mana.png',
'U' => 'blue_mana.png',
// ...
);
// Use preg replace to insert the images
$string = preg_replace_callback(
'/\{([' . $validCodes . ']+)\}/',
function($m) use ($images) {
if (isset($images[$m[1]])) {
return '<img src="' . $images[$m[1]] . '"/>';
}
return '';
},
$string
);
echo $string;
?>
请询问是否需要进一步澄清
编辑
我为您添加了一种机制,通过填充数组来添加您自己的转换
preg\u replace
和preg\u replace\u callback
都将替换它们在字符串中找到的所有事件
请注意,我使用的匿名函数仅在PHP5.3.0+中可用(http://php.net/manual/en/functions.anonymous.php)
编辑2
我刚刚意识到正则表达式的character类不会捕获所有字符,您需要character类后面的+来捕获一些代码。下面是一个使用正则表达式的示例(请参阅): 假设您的图像被称为标签的
x.png
{x}:
<?php
$string = '{1} is replaced with an image';
// Use a regular expression
// The codes below will be placed into a character class
$validCodes = 'BURGWXT0-9';
// This array contains the image transforms
$images = array(
'B' => 'black_mana.png',
'U' => 'blue_mana.png',
// ...
);
// Use preg replace to insert the images
$string = preg_replace_callback(
'/\{([' . $validCodes . ']+)\}/',
function($m) use ($images) {
if (isset($images[$m[1]])) {
return '<img src="' . $images[$m[1]] . '"/>';
}
return '';
},
$string
);
echo $string;
?>
请询问是否需要进一步澄清
编辑
我为您添加了一种机制,通过填充数组来添加您自己的转换
preg\u replace
和preg\u replace\u callback
都将替换它们在字符串中找到的所有事件
请注意,我使用的匿名函数仅在PHP5.3.0+中可用(http://php.net/manual/en/functions.anonymous.php)
编辑2
我刚刚意识到正则表达式的字符类不会捕获所有字符,需要在字符类后面加+来捕获一些代码。您可以使用正则表达式解析所有的{},然后在以后替换它们
preg|u match_all(“/{(1 | 2 | 3 | 99 | a)}/”,“{1}被替换为图像{a}{99},$match)
您可以使用正则表达式解析所有的{}输出,然后在以后替换它们
preg|u match_all(“/{(1 | 2 | 3 | 99 | a)}/”,“{1}替换为图像{a}{99},$match)
是从数据库或文件或用户输入读取的字符串,还是嵌入到现有的HTML或PHP中?至于是什么替换了{}中的值您是否有某种映射或查找,或者这是存储在数据库表中的内容?信息是从XML文件中提取的,然后根据提取的信息分配变量并自动创建帖子。字符串是从数据库、文件或用户输入中读取的,还是嵌入到现有的HTML或PHP中hat替换{}中的值您是否有某种映射或查找,或者这是存储在数据库表中的内容?信息从XML文件中提取,然后分配变量,并根据提取的信息自动创建帖子。我在上面的原始帖子中添加了我对您答案的回复,因为它太大,无法添加注释:)嗨,皮特,这是d插入产品数据时删除整个描述区域。你介意看一下这段代码吗?…我也在运行PHP5.3.10,匿名函数工作正常。preg\u replace\u callback
的第三个参数必须是代码中的$ability
-你正在传递一个空字符串。啊,我已经修复了,但是没有代码不返回图像,无论是什么也不返回,还是返回(,)…示例{t}返回(,)和{2}什么也不返回…..我刚刚运行了您上一个列表中的代码,带有$ability
更改,它对我来说工作正常-tryvar\u dump($ability);
在替换后检查字符串的内容。我在上面的原始帖子中添加了我对您答案的回复,因为它太大了,无法添加注释:)嗨,皮特,这会在插入产品数据时删除整个描述区域。您介意看一下这段代码吗?…我还在运行PHP 5.3.10和匿名函数ion工作正常。preg_replace_callback
的第三个参数需要是代码中的$ability
,您正在向它传递一个空字符串。啊!我修复了这个问题,但代码不会返回图像,它不会返回任何内容或返回(,)……例如{t}返回(,)和{2}不返回任何内容…..我刚刚运行了上一个清单中的代码,使用了$ability
更改,它对我来说可以正常工作-在替换后尝试var\u dump($ability);
检查字符串的内容。