是否可以使用PHP在同一函数中将小写字母转换为大写字母并删除重音符号?

时间:2018-07-30 19:28:16

标签: php xml diacritics

我正在编写一个PHP代码,其中$posted_data['name']是我的变量。 为了将其转换为大写字母,我使用了以下命令:(效果很好)

$uppercase = $posted_data['name'];
$uppercase = strtoupper($uppercase);

但是我很想知道是否可以在同一行中实现另一种功能,即去除字母重音符号或采用一种清除方式。

例如:

用户的字符串输入:João

字符串输出:JOAO

因此,在这种情况下,有两个功能在这里运行:一个功能可以将小写转换为大写,而另一个功能可以消除重音符号。

2 个答案:

答案 0 :(得分:1)

这里有些神奇之处,它可以将变音符号转换为非变音字符,然后将字母转换为大写字母。

<?php

function slug($string) {
    return strtoupper(trim(preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ' '));
}

$string = 'João';
echo slug($string);

Demo

在同一示例中,每个函数调用都分为不同的行,以使工作原理更清晰:

function slug($string) {
    $str = htmlentities($string, ENT_QUOTES, 'UTF-8');
    $str = preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', $str);
    $str = trim($str, ' ');
    return strtoupper($str);
}

答案 1 :(得分:0)

PHP的unicode支持(ext / intl)可以在一个调用中完成:

string(10) "HELLO AOU!"

输出:

//jQuery time
var current_fs, next_fs, previous_fs; //fieldsets
var left, opacity, scale; //fieldset properties which we will animate
var animating; //flag to prevent quick multi-click glitches

$(".next").click(function(){
	if(animating) return false;
	animating = true;
	
	current_fs = $(this).parent();
	next_fs = $(this).parent().next();
	
	//activate next step on progressbar using the index of next_fs
	$("#progressbar li").eq($("fieldset").index(next_fs)).addClass("active");
	
	//show the next fieldset
	next_fs.show(); 
	//hide the current fieldset with style
	current_fs.animate({opacity: 0}, {
		step: function(now, mx) {
			//as the opacity of current_fs reduces to 0 - stored in "now"
			//1. scale current_fs down to 80%
			scale = 1 - (1 - now) * 0.2;
			//2. bring next_fs from the right(50%)
			left = (now * 50)+"%";
			//3. increase opacity of next_fs to 1 as it moves in
			opacity = 1 - now;
			current_fs.css({
        'transform': 'scale('+scale+')',
        'position': 'absolute'
      });
			next_fs.css({'left': left, 'opacity': opacity});
		}, 
		duration: 800, 
		complete: function(){
			current_fs.hide();
			animating = false;
		}, 
		//this comes from the custom easing plugin
		easing: 'easeInOutBack'
	});
});

$(".previous").click(function(){
	if(animating) return false;
	animating = true;
	
	current_fs = $(this).parent();
	previous_fs = $(this).parent().prev();
	
	//de-activate current step on progressbar
	$("#progressbar li").eq($("fieldset").index(current_fs)).removeClass("active");
	
	//show the previous fieldset
	previous_fs.show(); 
	//hide the current fieldset with style
	current_fs.animate({opacity: 0}, {
		step: function(now, mx) {
			//as the opacity of current_fs reduces to 0 - stored in "now"
			//1. scale previous_fs from 80% to 100%
			scale = 0.8 + (1 - now) * 0.2;
			//2. take current_fs to the right(50%) - from 0%
			left = ((1-now) * 50)+"%";
			//3. increase opacity of previous_fs to 1 as it moves in
			opacity = 1 - now;
			current_fs.css({'left': left});
			previous_fs.css({'transform': 'scale('+scale+')', 'opacity': opacity});
		}, 
		duration: 800, 
		complete: function(){
			current_fs.hide();
			animating = false;
		}, 
		//this comes from the custom easing plugin
		easing: 'easeInOutBack'
	});
});

$(".submit").click(function(){
	return false;
})