我有這樣如何使用正則表達式名稱縮寫
原始數據的原始數據:
- SRI ISTYANINGSIH
- DIANA WREDHININGSIH
- ENDANG啓示Purwaningsih
- THERESIA Pudji ASTUTIE SARI
,我需要證明它是這樣的:
查看數據:
- SRI一
- DIANA W.
- ENDANG WP
- THERESIA PAS
我怎樣才能做到這一點使用PHP和正則表達式?
我有這樣如何使用正則表達式名稱縮寫
原始數據的原始數據:
,我需要證明它是這樣的:
查看數據:
我怎樣才能做到這一點使用PHP和正則表達式?
這是一個簡單的解決方案,其可以很容易地轉變成一個函數。
$name = 'THERESIA PUDJI ASTUTIE SARI';
//split the name to a maximum of 2 array values.
list ($first_name, $second_names) = explode(' ', $name, 2);
$second_names = explode(' ', $second_names);
foreach ($second_names as $key => $value) {
$second_names[$key] = $value[0] . '.';
}
echo $first_name . ' ' . implode(' ', $second_names);
謝謝......這是工作... – Andika
我不知道你的意思「做分隔符」是什麼,但這裏是一個基於正則表達式的解決方案:
function shorten_name($name) {
return preg_replace('/ (\w)\w*/', ' $1.', $name);
}
模式一個空格,然後任意數量的「單詞字符」匹配(\w
),即字母(語言環境感知),數字和下劃線,並將其替換爲唯一的空間,第一個字母和一個圓點這個序列。
的修改:
[A-Z]
\w
。\w
有(無空格)代替\S
。preg_replace('/([\s-])(\w)\w*/', '$1$2.', $name)
採取任何空白字符\s
或作爲分隔符劃線-
(即「穆勒 - RIEBENSEE」 =>「 M.-R.「)對不起,我的意思是... – Andika
正則表達式,我建議就可能的特殊情況下,一些變化,看到更新的答案。 –
假設,是$ var有要轉換的字符串。
$var = "THERESIA PUDJI ASTUTIE SARI";
$parts = explode(" ", $var);
$str = $parts[0]." ";
for($i=1; $i<count($parts); $i++){
$str .= $parts[$i][0].". ";
}
echo $str will give you desired output.
你想只用正則表達式來做到這一點?如果你想用PHP做,然後檢查我的答案。 –