我需要短语php字符串并根据模板将其“爆炸”成3个变量。
我尝试使用explode
功能,但它有点乱。
list($name, $role) = explode(' (', $value);
list($firstName, $lastName) = explode(' ', $name);
例如,我有这些字符串:
$str_1 = "Jane Joe (Team 1)";
$str_2 = "John Joe (Bank)";
我需要提取first_name
,last_name
和role
,这是括号中的字符串。
我也试过正则表达式,但我对正则表达式有点生疏
答案 0 :(得分:2)
尝试以下方法:
$str_1 = "Jane Joe (Team 1)";
preg_match("/^(\w*)\s?(\w*)\s?\\((.*)\\)$/", $str_1, $matches);
var_dump($matches);
答案 1 :(得分:2)
你可以使用正则表达式(你可能必须使用前两个分组的允许字符,下面允许使用单词字符和连字符):
$str_1 = "Jane Joe (Team 1)";
$matches = array();
if (preg_match('/([\w-]+) ([\w-]+) \((.*)\)/', $str_1, $matches)) {
echo $matches[1]; // Jane
echo $matches[2]; // Joe
echo $matches[3]; // Team 1
}
答案 2 :(得分:2)
您可以尝试使用正则表达式来获取输入字符串的那些部分:
PHP preg_match函数:http://php.net/manual/en/function.preg-match.php
preg_match('~^(.+) (.+)\((.+\))$~', $str_1, $matches);
这种调用使得@matches数组包含:
您还可以检查该模式是否与输入字符串匹配:
if(preg_match('^(.+) (.+)\((.+\))$', $str_1, $matches)) {
// do something with matches here
}
答案 3 :(得分:1)
只需使用explode
和substr
:
list($first_name, $last_name, $role) = explode(" ", "Jane Joe (Team 1)", 3);
$role = substr($role, 1,-1);
var_dump($first_name, $last_name, $role);
当然,这假设有1个单词的名字和姓氏。
答案 4 :(得分:1)
虽然我认为不同的方法比传递纯数据字符更清晰,但正则表达式可能会为您实现此目的。
$strArray = array(
"Jane Joe (Team 1)",
"John Joe (Bank)"
);
foreach($strArray as $str) {
$match = array();
preg_match("/^\(w*)/", $str, $match);
$firstName = $match[0];
preg_match("/\s\(w*)/", $str, $match);
$lastName = $match[0];
preg_match("/\((\w)\)/", $str, $match);
$role = $match[0];
}