更改字符串值

时间:2015-11-04 19:56:44

标签: php regex string

我试图将^替换为<span>。但是,我失败了。我试过str_replace,但没有正常工作。

所以,我原来的价值是:

^ffcb4a Special reward of the territory war. \rUsed to manufacture Rank IX gears. \rDon&#039;t lose this.

你可以看到,有一个颜色值,以^开头,我想替换为:'<span style=color"#ffcb4a">

但是对于我的str_replace,我得到了这个:

<span style='color:#'ffcb4a Special reward of the territory war. \rUsed to manufacture Rank IX gears. \rDon&#039;t lose this.

你可以看到,它不起作用。

$item_description = str_replace('^', "<span style='color:#'" . '', $item_description);

1 个答案:

答案 0 :(得分:0)

你需要使用正则表达式。

$item_description = '^ffcb4a Special reward of the territory war. \rUsed to manufacture Rank IX gears. \rDon\'t lose this.';
echo preg_replace('/\^(.*?)\h/', 
'<span style="color:#$1">', 
$item_description);

输出:

<span style="color:#ffcb4a">Special reward of the territory war. \rUsed to manufacture Rank IX gears. \rDon't lose this.

还不清楚您希望span在哪里结束..

此正则表达式捕获^和第一个水平空格之间的所有内容。

Regex101演示:https://regex101.com/r/bA4dC8/1

您无法使用str_replace,因为您不知道在哪里关闭span

如果您想在^之后拉出前6个字符,则可以更改

(.*?)\h

(.{6})

其中任何6个字符。

示例:

$item_description = '^ffcb4a Special reward of the territory war. \rUsed to manufacture Rank IX gears. \rDon\'t lose this.';
    echo preg_replace('/\^(.{6})/', 
    '<span style="color:#$1">', 
    $item_description);