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
更改,它对我来说工作正常-try
var\u dump($ability);
在替换后检查字符串的内容。我在上面的原始帖子中添加了我对您答案的回复,因为它太大了,无法添加注释:)嗨,皮特,这会在插入产品数据时删除整个描述区域。您介意看一下这段代码吗?…我还在运行PHP 5.3.10和匿名函数ion工作正常。
preg_replace_callback
的第三个参数需要是代码中的
$ability
,您正在向它传递一个空字符串。啊!我修复了这个问题,但代码不会返回图像,它不会返回任何内容或返回(,)……例如{t}返回(,)和{2}不返回任何内容…..我刚刚运行了上一个清单中的代码,使用了
$ability
更改,它对我来说可以正常工作-在替换后尝试
var\u dump($ability);
检查字符串的内容。