从左侧获取字符直到空间,然后再又有一个字符



我想从左侧获取所有文本,然后走到一个空间,然后在空间之后再获得一个字符。

示例:" 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
  1. 使用strpos
  2. 找到空间的索引
  3. substr
  4. 从开始到该索引 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

相关内容

最新更新