查找开始和一个字符串
问题描述:
内结束引号我有一个文本字符串如下:查找开始和一个字符串
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/
答
如果你确信双引号那里一样是我们目标字符串中看到(平衡,里面没有逃脱双引号),然后一个正则表达式将做的工作:
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);
OP首先不处理HTML。 @Jens – revo
你的输出和预期的外观是一样的吗? –
@SahilGulati - 他们没有。第一个对所有引号都有'fa-quote-left',而最后一个对所有右引号都有'fa-quote-right'。 –