我有一串文字如下:
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/
答案 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);