这是一个例子:
$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>';
总而言之,我想将第一个字母放在 <span>
中(如上所述)。
最佳答案
未经测试,但尝试添加 \W
(大写 W)来匹配非单词字符,而不是匹配搜索字符串中的零个或多个空格。然后它应该与您的第一个字母匹配。
$search = '_^<p>\W*([\w])(.+) *</p>$_i';
编辑:包含特殊字符
将其放在括号中以捕获它
$search = '_^<p>(\W*)([\w])(.+) *</p>$_i';
或作为完成的代码...
$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";
关于php - 将段落标签中的第一个字母包裹在跨度标签中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686003/