Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:使字符串大写,而不是其中的html实体?_Php_Html_Html Entities - Fatal编程技术网

PHP:使字符串大写,而不是其中的html实体?

PHP:使字符串大写,而不是其中的html实体?,php,html,html-entities,Php,Html,Html Entities,如何将字符串中的内容转换为大写,而不是其中的html实体?可能吗 $str = 'FUNDA MENTALISM'; echo strtoupper($str); 我想制作这个 'FUNDA MENTALISM' 但我是通过strtoupper() 我知道您没有在标记中列出CSS,但大多数情况下,将其留给客户端比较容易(如果您只打算将此字符串用于浏览器显示) 应用CSS文本转换:大写将为您执行此操作。好吧,删除实体并使用多字节字符集 $string = html_entit

如何将字符串中的内容转换为大写,而不是其中的html实体?可能吗

$str = 'FUNDA MENTALISM';
echo strtoupper($str);
我想制作这个

'FUNDA MENTALISM'
但我是通过
strtoupper()


我知道您没有在标记中列出CSS,但大多数情况下,将其留给客户端比较容易(如果您只打算将此字符串用于浏览器显示)


应用CSS
文本转换:大写
将为您执行此操作。

好吧,删除实体并使用多字节字符集

$string = html_entity_decode($string, ENT_COMPAT, 'UTF-8');
$string = mb_convert_case($string, MB_CASE_UPPER, 'UTF-8');
然后输出字符串。大多数html实体都不需要,只需使用本机字符并正确设置文档的输出

如果您确实必须使用实体,则需要使用正则表达式:

$callback = function($match) {
    return strtoupper($match[1]);
}
$regex = '/(\w+(?=&)|(?<=;)\w+)/';
$string = preg_replace_callback($regex, $callback, $string);
$callback=函数($match){
返回strtoupper($match[1]);
}

$regex='/(\w+(?=&)|(?首先将字符串转换为大写,而不是解码,这样会得到所需的结果

$var=<i>This</i><u>is</u><b>test</b><br>New line
函数htmlEntities()
$var=htmlEntities($var);
输出:

&lt;I&gt;THIS&lt;/I&gt;&lt;U&gt;IS&lt;/U&gt;&lt;B&gt;TEST&lt;/B&gt;&lt;BR&gt;NEW LINE
最终编码
$var=html\u实体\u解码($var);
输出:

这是新的一行


如果第一个htmlentities转换为大写;解码将失败,因为编码测试更改为大写,函数失败;

我不能使用kapa的CSS变体,因为我需要它作为标题标签。ircmaxell提供的解决方案可能是对的,但由于某些服务器没有
mbstring
扩展,此解决方案可能是b请注意:

echo htmlentities(strtoupper(html_entity_decode($str)));

我创建此函数是为了替换“strtoupper”,而不会对重音字母产生任何问题。它比html_entity_decode>strtoupper>htmlentities更有效,后者不处理某些字符(Ò):


我认为正则表达式应该是$regex='/\w+(?=&)|(?@Marcin:谢谢,我在中编辑了该正则表达式。我的意思是
[1]
,但我还想将原始字符类包装在子模式中…唯一的缺点是它不会帮助您解决标题标记中的相同问题
&lt;I&gt;THIS&lt;/I&gt;&lt;U&gt;IS&lt;/U&gt;&lt;B&gt;TEST&lt;/B&gt;&lt;BR&gt;NEW LINE
echo htmlentities(strtoupper(html_entity_decode($str)));
function EnMajuscule($Texte) {
    $Texte = strtoupper($Texte);
    $Texte = preg_replace_callback('#&([A-Z])([A-Z]{2,5});#',function($a){ return '&'.$a[1].strtolower($a[2]).';'; },$Texte);
    return $Texte;
}