以下是一个例子:
$str = '<p>"bla" bla</p>';
$search = '_^<p> *([\w])(.+) *</p>$_i';
$replacement = '<p><span class="first_letter">$1</span>$2</p>';
$new = preg_replace( $search, $replacement, $str );
echo $new."\n";
完美无缺。但是如果给定的字符串以某种特殊字符开头,例如“,”,它将删除它。
示例$str = '<p>bla bla</p>';
总结一下,我想把第一个字母放在这里(如上所述)。
答案 0 :(得分:2)
未经测试,但尝试添加匹配非单词字符的\W
(大写字母W),而不是匹配搜索字符串中的零个或多个空格。那应该与你的第一个字母相符。
$search = '_^<p>\W*([\w])(.+) *</p>$_i';
编辑:包含特殊字符
将其放在括号中以捕捉它
$search = '_^<p>(\W*)([\w])(.+) *</p>$_i';
demo:http://refiddle.com/1s8(底部有替换字符串的替换标记)
或完成代码......
$str = '<p>"bla" bla</p>';
$search = '_^<p>(\W*)([\w])(.+) *</p>$_i';
$replacement = '<p>$1<span class="first_letter">$2</span>$3</p>';
$new = preg_replace( $search, $replacement, $str );
echo $new."\n";
答案 1 :(得分:2)
我通常直接回答问题并且不做疯狂的猜测,但似乎最有可能使用你的代码来设置段落的第一个字母。你可以做这样的事情(使用一个所谓的伪类):
p:first-letter
{
font-size:200%;
color:#8A2BE2;
}
答案 2 :(得分:1)
如果要保留特殊字符,可以使用以下内容。我测试了一下。
$search = '_^<p>([\W]*)([\w])(.+) *</p>$_i';
$replacement = '<p>$1<span class="first_letter">$2</span>$3</p>';
这适用于您的示例。
答案 3 :(得分:1)
<?php
$str = '<p style="bla">"Great!
</P>';
$str = preg_replace( '~(<p.*?>\W*?)(\w)(.*?</p>)~is', "$1<span>$2</span>$3", $str);
echo $str;
答案 4 :(得分:1)
可以采取的另一种方式 - http://ideone.com/v5KvL
<?php
$str = '<p>"bla" bla</p>';
$new = preg_replace( '~(?<=^<p>)(\W*)(\w)(?=[\s\S]*</p>$)~i',
'$1<span class="first_letter">$2</span>',
$str );
echo $new."\n";
?>
答案 5 :(得分:-1)
我认为以下内容应该有效;
$string[0] = "<span class="first_letter>" + $string[0] + "</span>";