php - 将段落标签中的第一个字母包裹在跨度标签中

标签 php html regex replace preg-replace

这是一个例子:

$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/

相关文章:

javascript - 检查哪个复选框被选中

html - R - 使用 rvest 抓取受密码保护的网站,而无需在每次循环迭代时登录

regex - 模板工具包在字符串中保留前 20 个字符

php - 更改 PHPSESSID cookie 的名称会得到什么?

php - 更改子类的 protected 变量的值

jquery - 根据 child 的第一行计算元素宽度

javascript - 用正则表达式替换选择索引属性

regex - Kotlin:如何获取匹配的第一行的捕获组?

php - FFMPEG:如何在 FFMPEG Php 中使用 S3 url

php - 跨多列计数