为了账号安全,请及时绑定邮箱和手机立即绑定

将单词/短语/句子分为三部分

将单词/短语/句子分为三部分

PHP
慕妹3146593 2021-05-13 12:10:01
我想把这个词/短语/句子分成三部分。fld_example是单词/短语/句子的存储位置。堆叠流量Abcpqr(UR)流利的英语会话Defklmno(1WIR)英语水平GHI(2WIR)测试ADG(3WIR)堆栈溢出Abcpqr(UR)的输出应为[0]堆栈溢出[1] Abcpqr[2](UR)和英语会话Defklmno(1WIR)的流利程度[0]叠放过流[1] Defklmno[2](1WIR)和英语熟练程度GHI(2WIR)[0]溢流[1] GHI[2](2WIR)和用于测试ADG(3WIR)[0]测试[1] ADG[2](3WIR)我使用了此代码,但仅适用于测试(3WIR)                                      <?php                                      $Original = $row['fld_example'];                                                                        $OriginalExplode = explode(' ', $Original);                                      ?><input name="example0" id="example0" value="<?php echo $OriginalExplode[0]; ?>" type="text" autocomplete="off" required><input name="example1" id="example1" value="<?php echo $OriginalExplode[1]; ?>" type="text" autocomplete="off" required>
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

PHP代码为:


function splitAtLastWord($sentence)

{

    return preg_split("/\s+(?=\S*+$)/", $sentence);

}


$sentence = "Fluency in English Conversation Defklmno (1WIR)";  


list($begin, $end)    = splitAtLastWord($sentence);

list($first, $middle) = splitAtLastWord($begin);

$result = [$first, $middle, $end]; 


echo "<pre>" . print_r($result, TRUE) . "</pre>";

输出为:


Array

(

    [0] => Fluency in English Conversation

    [1] => Defklmno

    [2] => (1WIR)

)

您也可以编写不带正则表达式的相同函数:


function splitAtLastWord($sentence)

{

    $words = explode(" ", $sentence);

    $last  = array_pop($words);

    return [implode(" ", $words), $last];

}

老实说,这是一种更好的方法。


这是一种计算上更有效的方法:


function splitAtLastWord($sentence)

{

   $lastSpacePos = strrpos($sentence, " ");

   return [substr($sentence, 0, $lastSpacePos), substr($sentence, $lastSpacePos + 1)]; 

}

看起来不太好看,但速度更快。


无论如何,定义这样一个单独的函数很有用,您可以在其他地方重用它。


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信