我想分隔大写或小写字符。PHP - 单独的大写和小写字符
在这样的文字:“HELLO WORLD你好吗”
我想在第一个变量:“HELLO WORLD” 和“你怎么样”中的第二位。
我该怎么用php做到这一点?
非常感谢
我想分隔大写或小写字符。PHP - 单独的大写和小写字符
在这样的文字:“HELLO WORLD你好吗”
我想在第一个变量:“HELLO WORLD” 和“你怎么样”中的第二位。
我该怎么用php做到这一点?
非常感谢
只需使用一个不同的,非正则表达式的方法
$original = "HELLO WORLD how are you";
$upper = trim(implode(array_intersect(str_split($original),str_split(strtoupper($original)))));
$lower = trim(implode(array_intersect(str_split($original),str_split(strtolower($original)))));
echo $upper,'<br />';
echo $lower,'<br />';
这是假设字符串的第一部分是大写和其余的是正常的(例如混合的情况下)。就像你发布的例子一样。
preg_match('/^([A-Z\s]+)(.*)$/', $string, $match);
$first_part = trim($match[1]);
$second_part = trim($match[2]);
如果大写和混合大小写单词在句子中混合,然后我会做这样(注意,这个替换单个空格词与词之间的一切)。
$words = preg_split('/[^\w]+/', $string);
$upper = '';
$lower = '';
foreach ($words as $word) {
if ($word == strtoupper($word)) {
$upper .= ' ' . $word;
} else {
$lower .= ' ' . $word;
}
}
如果你输入的字符串始终是一个UPPER CASE SEQUENCE
后跟一个lower case sequence
,这样的事情可能会做它
if (preg_match('/^([A-Z\s]+)\s+([a-z\s+])$/', $str, $matches))
{
$upper=$matches[1];
$lower=$matches[2];
}
要通过正则表达式
^
锚比赛中行走字符串的开始,以便我们测试整个字符串(
openi纳克括号开始一个组中,我们可以提取以后作为$matches[1]
[A-Z\s]
是字符类匹配字符它们是从A到Z或whitespce+
可以确保有一个或多个这种字符)
关闭第一组$
锚比赛寻找下外壳部到字符串结束前匹配多一点空白,让我们可以肯定我们已经考虑整个字符串虽然正则表达式是最好的方法确定上限或下限,也可以使用此功能,了解有无上限或字符的下部。如果被发送的参数字符串包括完全上,这个函数将返回真值
我知道这是有点晚了,但我碰到这个问题绊倒在寻找别的东西。无论如何,preg_split
适用于这种情况:
$original = "HELLO WORLD how are you";
$split = preg_split(
'/([[:lower:]].*)/',
$original,
0,
PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
);
print_r($split);
输出:
Array
(
[0] => HELLO WORLD
[1] => how are you
)
后你有这么远的代码? – 2011-02-11 12:22:24
这是什么逻辑。能有像“Hello WORLD”这样的输入吗?你想怎么处理? “HEllO WoRLD”怎么样? – 2011-02-11 12:22:41