在字符串

时间:2017-04-13 11:19:31

标签: php

我有一串文字如下:

The nice man said "How's things today" and I replied "All is good thanks".

我想替换fontawesome图标的双引号。如果我在双qoutes上做一个字符串替换它工作正常。但正如预期的那样,这只是为字符串中的每个双引号提供了一个通用的左手引号。

我目前的代码:

$str = The nice man said "How's things today" and I replied "All is good thanks".

$str = str_replace('"', '<i class="fa fa-quote-left" aria-hidden="true"></i>');

输出:

The nice man said <i class="fa fa-quote-left" aria-hidden="true"></i>How's things today<i class="fa fa-quote-left" aria-hidden="true"></i> and I replied <i class="fa fa-quote-left" aria-hidden="true"></i>All is good thanks<i class="fa fa-quote-left" aria-hidden="true"></i>.

期望的输出:

The nice man said <i class="fa fa-quote-left" aria-hidden="true"></i>How's things today<i class="fa fa-quote-right" aria-hidden="true"></i> and I replied <i class="fa fa-quote-left" aria-hidden="true"></i>All is good thanks<i class="fa fa-quote-right" aria-hidden="true"></i>.

<小时/> 示例输出:http://jsfiddle.net/JfGVE/1975/

1 个答案:

答案 0 :(得分:4)

如果您确定双引号与我们在主题字符串中看到的相同(平衡,内部没有转义双引号),那么正则表达式将完成这项工作:

echo preg_replace('~(")([^"]+)(")~', '<i class="fa fa-quote-left" aria-hidden="true"></i>\\2<i class="fa fa-quote-right" aria-hidden="true"></i>', $str);

Live demo