PHP规则从字符串中提取部分
我已经用C#创建了一个正则表达式,但现在我在尝试用PHP运行它时遇到了困难。我想他们也会一样,但显然不是。有人知道下面需要更改什么才能使其正常工作吗 其思想是确保字符串的格式为“Firstname Lastname(Company Name)”,然后提取字符串的各个部分 C#代码: PHP代码(未按预期工作):PHP规则从字符串中提取部分,php,regex,Php,Regex,我已经用C#创建了一个正则表达式,但现在我在尝试用PHP运行它时遇到了困难。我想他们也会一样,但显然不是。有人知道下面需要更改什么才能使其正常工作吗 其思想是确保字符串的格式为“Firstname Lastname(Company Name)”,然后提取字符串的各个部分 C#代码: PHP代码(未按预期工作): 可能是因为你用了双引号。PHP可能正在拦截转义序列并将其删除,因为它们无法识别。可能是因为您使用了双引号。PHP可能正在拦截您的转义序列并将其删除,因为它们无法识别。在这里似乎起作用。您
可能是因为你用了双引号。PHP可能正在拦截转义序列并将其删除,因为它们无法识别。可能是因为您使用了双引号。PHP可能正在拦截您的转义序列并将其删除,因为它们无法识别。在这里似乎起作用。您应该意识到,当您在正则表达式中捕获匹配项时,PHP生成的数组将包含与整个模式匹配的完整字符串,以及每个单独的捕获组 对于您的姓名/公司名称,您需要使用
$nameMatches[1] -> Firstname
$nameMatches[2] -> Lastname
and
$companyMatches[1] -> Company Name
这就是被捕获组匹配的。两者的
[0]
元素都是整个字符串。似乎在这里起作用。您应该意识到,当您在正则表达式中捕获匹配项时,PHP生成的数组将包含与整个模式匹配的完整字符串,以及每个单独的捕获组
对于您的姓名/公司名称,您需要使用
$nameMatches[1] -> Firstname
$nameMatches[2] -> Lastname
and
$companyMatches[1] -> Company Name
这就是被捕获组匹配的。两者的[0]
元素都是整个字符串。您的模式确实可以提取您想要的信息。尝试将两行print_r()替换为:
print "Firstname: " . $nameMatches[1] . "\n";
print "Lastname: " . $nameMatches[2] . "\n";
print "Company Name: " . $companyMatches[1] . "\n";
这个输出有什么问题吗
Firstname: Firstname
Lastname: Lastname
Company Name: Company Name
您的模式似乎确实提取了您想要的信息。尝试将两行print_r()替换为:
print "Firstname: " . $nameMatches[1] . "\n";
print "Lastname: " . $nameMatches[2] . "\n";
print "Company Name: " . $companyMatches[1] . "\n";
这个输出有什么问题吗
Firstname: Firstname
Lastname: Lastname
Company Name: Company Name
:与单引号字符串一样,转义任何其他字符也会导致打印反斜杠。
-尽管这是最佳实践中的一个有效点。:与单引号字符串一样,转义任何其他字符也会导致打印反斜杠。
-尽管这是最佳实践中的一个有效点。