在我的网站中,我想使用德语字母ß,它只作为小写字母存在。虽然我希望我的所有标题都以大写字母(大写)显示,但我使用font-transform: uppercase
。但是用大写的SS取代了ß字母,由于某些设计和编程功能,这是不需要的。
所以我在想preg_replace_callback
,它会将我的HTML代码标题中的所有字母都改为大写字母。
$content = preg_replace_callback('/(<h\d>)(.*)(<\/h\d>)/', function($matches) {
return $matches[1] . mb_strtoupper($matches[2], 'UTF-8') . $matches[3];
}, $content);
在没有特殊属性或嵌套链接等的标题上效果很好。因为我是正则表达式的新手,我不知道如何写这些。
基本上<h2 class="heading-italic"><a href="http://www.google.de">Google</a></h2>
应该变为<h2 class="heading-italic"><a href="http://www.google.de">GOOGLE</a></h2>
我的正则表达式看起来如何,还会捕获带有属性和(多个)嵌套元素的标题?
答案 0 :(得分:0)
将/(<h\d>)(.*)(<\/h\d>)/
更改为此:
$newregex = '/(<h\d.*?>)(<a .*?>)?(.*)(<\/a>)?(<\/h\d>)/' ;
$content = preg_replace_callback( $newregex , function($matches) {
return $matches[1] . mb_strtoupper($matches[3], 'UTF-8') . $matches[5];
}, $content);
注意mb_strtoupper($matches[3], 'UTF-8')
和[3]
用于新的正则表达式和第3组。 group2和group4是可选的。