取这个字符串:
Israel agrees to significant easing of Gaza blockade
我想返回用逗号分隔的大写单词,如下所示:
Israel,Gaza
我想它一定是可能的。有什么想法吗?
答案 0 :(得分:9)
将字符串拆分为explode(' ')的单词,迭代单词并检查单词是否大写,检查它的第一个字母($str[0]
)是否与其大写变体({{ 1}})。您可以使用结果填充数组,然后join(',')
答案 1 :(得分:3)
@Patrick Daryll Glandien建议的代码。
$stringArray = explode(" ", $string);
foreach($stringArray as $word){
if($word[0]==strtoupper($word[0])){
$capitalizedWords[] = $word;
}
}
$capitalizedWords = join(",",$capitalizedWords);
//$capitalizedWords = implode(",",$capitalizedWords);
答案 2 :(得分:1)
使用preg_match_all()
:
preg_match_all('/[A-Z]+[\w]*/', $str, $matches);
如果您需要使用非英语或重音字符,请使用:
preg_match_all('/\p{L}*\p{Lu}+\p{L}*/', $str, $matches);
对于第一个字母没有大写字母的单词也适用,但后续字母在某些语言/单词中是惯用的。
答案 3 :(得分:0)
您可以使用正则表达式。如下所示应该让你闭幕:
<?php
$str = 'Israel agrees to significant easing of Gaza blockade';
preg_match_all('/([A-Z]{1}\w+)[^\w]*/', $str, $matches);
print_r($matches);
?>
编辑:我的正则表达式已经过时了。
答案 4 :(得分:0)
$str = 'Israel agrees to significant easing of Gaza blockade';
$result = array();
$tok = strtok($str, ' ');
do {
if($tok == ucfirst($tok))
$result[] = $tok;
}
while(($tok = strtok(' ')) !== false);
答案 5 :(得分:-4)
这里有一些代码:
$arr = explode($words, ' ');
for ($word as $words){
if($word[0] == strtoupper($word[0]){
$newarr[] = $word;
print join(', ', $newarr);