PHP从字符串中获取值

时间:2018-01-03 12:51:36

标签: php

我正在做实习生,我遇到了一个问题。基本上我有一个CN=van der Valk\, Marco,OU=UT,OU=NL,OU=EMEA,OU=associates,OU=usersAndGroups,DC=corporate,DC=ingrammicro,DC=com的字符串,但我只想知道在这种情况下CN后面会是van der Valk。我尝试了修剪功能,但没有成功,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

你可以使用strpos 首先,我找到CN=的位置,然后将其用作第二个strpos中的偏移量(以查找字符串的结尾)。

$str = "CN=van der Valk\, Marco,OU=UT,OU=NL,OU=EMEA,OU=associates,OU=usersAndGroups,DC=corporate,DC=ingrammicro,DC=com";
$CN = strpos($str, "CN=")+3; // +3 because CN= is three characters.
Echo substr($str, $CN, strpos($str, '\\', $CN)-3); // -3 because we need to subtract what we added above.

https://3v4l.org/k5H26


我实际上开始认为正则表达式可能是一个很好的工具。
在这里,我捕获了名字和姓氏 然后删除斜杠并在逗号上爆炸并将它们保存在$ firstname和$ lastname中。

$str = 'CN=van der Valk\, Marco,OU=UT,OU=NL,OU=EMEA,OU=associates,OU=usersAndGroups,DC=corporate,DC=ingrammicro,DC=com';

preg_match("/CN=([\w\s\\\\,]+),/", $str, $match);

List($lastname, $firstname) = explode(',', str_replace("\\", "", $match[1]));

Echo $firstname ." " . $lastname;

https://3v4l.org/9RN10

答案 1 :(得分:0)

这是一个例子

$val = "CN=van der Valk\, Marco,OU=UT,OU=NL,OU=EMEA,OU=associates,OU=usersAndGroups,DC=corporate,DC=ingrammicro,DC=com";
$valSplit = explode(",", $val)[0];
$firstVal = str_replace("\\", "", $valSplit);
print($firstVal);

好的,Explode根据逗号将字符串拆分为一系列数组。 str_replace需要3个参数。第一个是要替换的内容,第二个是应该替换的内容,第三个是应该替换的字符串。在这种情况下,目标是删除斜杠。

答案 2 :(得分:0)

$str = 'CN=van der Valk\, Marco,OU=UT,OU=NL,OU=EMEA,OU=associates,OU=usersAndGroups,DC=corporate,DC=ingrammicro,DC=com';

// find position of 1st \, as \ is a string modifier we escape it with \\
$index = strpos($str, '\\');

echo "$index <br>";
// substr('string', 'starting index', 'length: numbers of character to get')
$new_string = substr($str, 3, $index - 3);

echo $new_string; // van der Valk