我有这样的原始数据
原始数据:
我需要这样表现出来:
视图数据:
如何使用PHP和正则表达式来完成这一任务?
发布于 2013-02-07 07:05:25
这是一个简单的解决方案,可以很容易地转化为一个函数。
$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);发布于 2013-02-07 07:19:43
假设$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.发布于 2013-02-07 07:10:09
我不知道"make定界符“是什么意思,但是这里有一个基于正则表达式的解决方案:
function shorten_name($name) {
return preg_replace('/ (\w)\w*/', ' $1.', $name);
}该模式匹配一个空格,后面跟着任意数量的“单词字符”(\w),即字母(知道地区)、数字和下划线,然后用空格、第一个字母和一个点替换这个序列。
可能的修改:
\w替换为[A-Z]。\S (非空格)代替\w。preg_replace('/([\s-])(\w)\w*/', '$1$2.', $name) )以任何空白字符\s或破折号-作为分隔符(例如,“M LLER-RIEBENSEE”=>“M”)https://stackoverflow.com/questions/14745226
复制相似问题