我有一个像
这样的句子“:Lim Chee Kong \ S717613 IB CUST。”
我需要提取名字Lim Chee Kong。这是使用php preg match或任何其他规则的任何数字或特殊字符之前或之后的第一个单词。
句子可以是动态的。
答案 0 :(得分:1)
$str = ": Lim Chee Kong \ S717613 IB CUST.";
$res = preg_split("/[^A-Za-z]/",$str);
$result = Array();
$wordFound = false;
$noMoreWords = false;
foreach($res as $key=>$words) {
if($words != '' && !$noMoreWords) {
$result[] = $words;
$wordFound = true;
}
if($wordFound && $words == '') {
$noMoreWords = true;
}
}
echo implode(" ",$result); //Lim Chee Kong
答案 1 :(得分:0)
您对正则表达式的定义与您的示例不兼容。 “这是第一个字......” - > Lim Chee Kong不是一个字。这是一组由空白分隔的单词 “...在任意数量的特殊字符之前或之后” - >对于您的示例中的子串“IB CUST”也是如此。
也就是说,以下是匹配一组可选的字符包围的单词:
\W*\b([a-zA-Z\s]+)\b\W*
在你的例子中,这是“Lim Chee Kong”和“IB CUST”。
答案 2 :(得分:0)
正如您所说,这个名称是从数组中回显的,您可以这样做:(我不知道你为什么要拆分它。)
您的数组作为示例:
$array = ['name' => 'Lim Chee Kong', 'extra' => 'S717613 IB CUST'];
回应:
echo ' ":' . $array['name'] . ' \ ' . $array['extra'] . '." ';
<强>结果:强>
&#34;:Lim Chee Kong \ S717613 IB CUST。&#34;
阵列可能包含要回显的其他信息。这是你需要的吗?
答案 3 :(得分:0)
只需使用preg_match功能即可。
示例:
<?php
$string = ": Lim Chee Kong \ S717613 IB CUST.";
preg_match('/^[^\w]*([\w\s]+)\s[^\w]+/', $string, $m);
echo $m[1];