我想从左侧获取所有文本,然后走到一个空间,然后在空间之后再获得一个字符。
示例:" Brian Spelling" 将是" Brian s"
我该如何在PHP中执行此操作?
在ASP中,代码看起来像这样:
strName1=left(strName1,InStr(strName1, " ")+1)
<?php
$strName1 = "Brian Spelling";
$strName1 = substr($strName1, 0, strpos($strName1, ' ')+2);
echo $strName1;
打印
Brian S
- 使用
strpos
找到空间的索引 - 用
substr
从开始到该索引 2的字符串
还考虑如何更新以下名称的逻辑:
- h。G. Wells
- 马丁·路德·金(Martin Luther King),小
- 雪儿
用explode
函数将字符串分开,并用substr
函数将第二部分的第一个字符划分。
$explodedString = explode(" ", $strName1);
$newString = $explodedString[0] . " " . substr($explodedString[1], 1);
regexp-确保用/u修改器(unredyedy)键入第二个单词。
$t = "Brian Spelling something else";
preg_match( "/(.*) ./Ui", $t, $r );
echo $r[0];
您得到了" Brian S"。
尝试以下代码
$name="Brian Lara"
$pattern = '/w+s[a-zA-Z]/';
preg_match($pattern,$name,$match);
echo $match[0];
ouput
Brian L
$string = "Brian Spelling";
$element = explode(' ', $string);
$out = $element[0] . ' ' . $element[1]{0};
,只是为了取得乐趣,请您在建议下的回答,您可以做这样的事情:
$skip = array( 'jr.', 'jr', 'sr', 'sr.', 'md' );
$string = "Martin Luther King Jr.";
$element = explode(' ', $string);
$count = count( $element );
if( $count > 1)
{
$out = $element[0] . ' ';
$out .= ( in_array( strtolower( $element[ $count - 1 ] ), $skip ) )
? $element[ $count - 2 ]{0} : $element[ $count - 1 ]{0};
} else $out = $string;
echo $out;
just编辑的" cher"也可以正常工作
添加您要跳过的所有后缀添加到$ skip Array