我想把这个词/短语/句子分成三部分。 fld_example是单词/短语/句子的存储位置。
堆叠流量Abcpqr(UR)
英语会话流畅度(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>
答案 0 :(得分:1)
您可以使用explode
和str_replace
$string = "Testing (3WIR)";
$stringToArray = explode(":",str_replace("(",":(",$string));
echo '<pre>';
print_r($stringToArray);
已编辑的问题答案:-
$subject = "Fluency in English Conversation Defklmno (1WIR)";
$toArray = explode(' ',$subject);
if(count($toArray) > 2){
$first = implode(" ",array_slice($toArray, 0,count($toArray)-2));
$second = $toArray[count($toArray)-2];
$third = $toArray[count($toArray)-1];
$result = array_values(array_filter([$first, $second, $third]));
}else{
$result = array_values(array_filter(explode(":",str_replace("(",":(",$subject))));
}
答案 1 :(得分:1)
我不喜欢正则表达式,但是这个看起来很不错:
Regex to split a string only by the last whitespace character
因此,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)];
}
它看起来不太好看,但速度更快。
无论如何,定义这样一个单独的函数很有用,您可以在其他地方重用它。