我想分隔大寫或小寫字符。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