PHP,用 & 符号拆分字符串
PHP, Break Up String with Ampersand
我花了很多时间在网上搜索这个,所以在有人抨击我没有看之前......相信我,我已经。
问题:我正在使用一个包含“&”符号的字符串来显示两个名字。困难:有时我可能需要拉出左边的名字,或者右边的名字来显示。额外的困难是一些名称可能包含 HTML 个实体,这些实体当然也使用 & 符号。
示例:我可以使用像这样简单的东西:
"Fred & Wilma"
为了仅从字符串中获取 "Fred",我尝试使用 PHP 函数 STRPOS(),但我什么也没得到。
$nPos = strpos( " & ", $names );
请注意,我在两边都使用了空格以避免 HTML 实体出现问题。
更有趣,检查我是否没有结果:
if ( $nPos === 0 )
{
echo "String ' $' not found in " . $names . "<br />";
}
没有 return 值。这告诉我,从我可以在网上找到的各种文档等,我应该有一个有用的 $nPos 值。
如果我添加:
echo "Position of string ' & ': " . $nPos . "<br />";
我在双引号中的文本后得到一个空白值。
我不知道如何在这里做我需要的事情。我需要获得“&”字符的位置,但我没有得到它。从那里显然需要使用 substr() 函数才能从 & 符号的左侧 and/or 右侧获取值。
如果你只需要名字,我会把它分解成一个数组:
$nameArray = explode(' & ', $names);
这不会在 HTML 上意外拆分,因为在那种情况下 &
后面没有跟 space。
strpos
第一个参数是 haystack - 您在其中进行搜索的字符串,第二个参数是 needle - 您搜索的字符串。所以只需交换参数:
$nPos = strpos( $names, " & " );
您可以找到更多信息here
您可以使用 explode($delimeter, $subject_string)
内置的功能 PHP。例如:
$names = 'firstName & lastName';
// use `&` as delimeter to split on and callback `trim` function on each array item
$names_array = array_map('trim',explode(' & ', $names));
现在 $names_array 看起来像这样:
array(
[0] => 'firstName'
[1] => 'lastName'
)
可以通过以下方式访问:
$firstName = $names_array[0];
$lastName = $names_array[1];
我花了很多时间在网上搜索这个,所以在有人抨击我没有看之前......相信我,我已经。
问题:我正在使用一个包含“&”符号的字符串来显示两个名字。困难:有时我可能需要拉出左边的名字,或者右边的名字来显示。额外的困难是一些名称可能包含 HTML 个实体,这些实体当然也使用 & 符号。
示例:我可以使用像这样简单的东西:
"Fred & Wilma"
为了仅从字符串中获取 "Fred",我尝试使用 PHP 函数 STRPOS(),但我什么也没得到。
$nPos = strpos( " & ", $names );
请注意,我在两边都使用了空格以避免 HTML 实体出现问题。
更有趣,检查我是否没有结果:
if ( $nPos === 0 )
{
echo "String ' $' not found in " . $names . "<br />";
}
没有 return 值。这告诉我,从我可以在网上找到的各种文档等,我应该有一个有用的 $nPos 值。
如果我添加:
echo "Position of string ' & ': " . $nPos . "<br />";
我在双引号中的文本后得到一个空白值。
我不知道如何在这里做我需要的事情。我需要获得“&”字符的位置,但我没有得到它。从那里显然需要使用 substr() 函数才能从 & 符号的左侧 and/or 右侧获取值。
如果你只需要名字,我会把它分解成一个数组:
$nameArray = explode(' & ', $names);
这不会在 HTML 上意外拆分,因为在那种情况下 &
后面没有跟 space。
strpos
第一个参数是 haystack - 您在其中进行搜索的字符串,第二个参数是 needle - 您搜索的字符串。所以只需交换参数:
$nPos = strpos( $names, " & " );
您可以找到更多信息here
您可以使用 explode($delimeter, $subject_string)
内置的功能 PHP。例如:
$names = 'firstName & lastName';
// use `&` as delimeter to split on and callback `trim` function on each array item
$names_array = array_map('trim',explode(' & ', $names));
现在 $names_array 看起来像这样:
array(
[0] => 'firstName'
[1] => 'lastName'
)
可以通过以下方式访问:
$firstName = $names_array[0];
$lastName = $names_array[1];