PHP,用符号和分解字符串
我已经花了很多时间在网上搜索这个,所以在有人因为我不看而责骂我之前。。。相信我,我有 问题是:我正在使用一个包含一个符号和的字符串来显示两个名称。困难:有时我可能需要拉左边的名字,或者拉右边的名字来显示。另一个困难是,一些名称可能包括HTML实体,当然也使用符号 示例:我可以使用以下简单的方法: “弗雷德和威尔玛” 为了从字符串中得到“Fred”,我尝试使用PHP函数STRPOS(),但什么也没有得到PHP,用符号和分解字符串,php,strpos,ampersand,Php,Strpos,Ampersand,我已经花了很多时间在网上搜索这个,所以在有人因为我不看而责骂我之前。。。相信我,我有 问题是:我正在使用一个包含一个符号和的字符串来显示两个名称。困难:有时我可能需要拉左边的名字,或者拉右边的名字来显示。另一个困难是,一些名称可能包括HTML实体,当然也使用符号 示例:我可以使用以下简单的方法: “弗雷德和威尔玛” 为了从字符串中得到“Fred”,我尝试使用PHP函数STRPOS(),但什么也没有得到 $nPos = strpos( " & ", $names ); 注意,我在两侧使用
$nPos = strpos( " & ", $names );
注意,我在两侧使用空格来避免HTML实体的问题
更有趣的是,检查是否没有结果:
if ( $nPos === 0 )
{
echo "String ' $' not found in " . $names . "<br />";
}
if($nPos==0)
{
在“$names”中未找到回显“String'$”。
;
}
不返回值。这告诉我,从各种文档和我能在网上找到的东西来看,我应该对$NPO有一个有用的价值
如果我加上:
echo "Position of string ' & ': " . $nPos . "<br />";
echo“字符串的位置'&':”$非营利组织。“
”;
我在双引号中的文本后面得到一个空值
我不知道如何在这里做我需要的事。我需要得到“&”字符的位置,但我没有得到它。因此,显然需要使用substr()函数来获取符号左侧和/或右侧的值 如果您只需要名称,我会将其分解为一个数组:
$nameArray = explode(' & ', $names);
这不会在HTML上意外拆分,因为在这种情况下,
&
后面没有空格。如果您只需要名称,我会将其拆分为一个数组:
$nameArray = explode(' & ', $names);
这不会在HTML上意外拆分,因为在这种情况下,
&
后面没有空格。strpos
第一个参数是haystack-string,您在其中进行搜索,第二个参数是您搜索的针形字符串。所以只需交换参数:
$nPos=strpos($names,&”)代码>
您可以找到更多信息strpos
第一个参数是haystack-string,您可以在其中进行搜索,第二个参数是needle-string。所以只需交换参数:
$nPos=strpos($names,&”)代码>
您可以找到更多信息您可以使用内置PHP的explode($delimeter,$subject\u string)
函数。例如:
$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\u数组将如下所示:
array(
[0] => 'firstName'
[1] => 'lastName'
)
并可通过以下方式访问:
$firstName = $names_array[0];
$lastName = $names_array[1];
您可以使用内置PHP的explode($delimeter,$subject\u string)
函数。例如:
$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\u数组将如下所示:
array(
[0] => 'firstName'
[1] => 'lastName'
)
并可通过以下方式访问:
$firstName = $names_array[0];
$lastName = $names_array[1];
我必须热爱PHP,它与针/干草堆参数排序一致。它是一致的:字符串函数是干草堆,针和数组函数是针,干草堆。谢谢——正如前面提到的,正是PHP和参数排序的一致性让我彻底失望。使用explode()的建议是我没有考虑过的,因为我对它不太熟悉(我最近才知道)。这就解决了目前的问题。再次感谢!我必须热爱PHP,它与针/干草堆参数排序一致。它是一致的:字符串函数是干草堆,针和数组函数是针,干草堆。谢谢——正如前面提到的,正是PHP和参数排序的一致性让我彻底失望。使用explode()的建议是我没有考虑过的,因为我对它不太熟悉(我最近才知道)。这就解决了目前的问题。再次感谢!除了纠正您使用strpos的答案之外,请不要让if($nPos==0)
检查针头是否在草堆中的0
位置。如果(NPOS===false),你应该把它改成<代码>。你可以考虑决定HTML实体,这样你就可以处理它们所代表的字符。毕竟,在HTML中使用符号的正确方法是&代码>。随后按要求重新编码。除了更正您使用的strpos
的答案外,请不要让if($nPos==0)
检查是否在草堆中的0
位置找到了针。如果(NPOS===false),你应该把它改成<代码>。你可以考虑决定HTML实体,这样你就可以处理它们所代表的字符。毕竟,在HTML中使用符号的正确方法是&代码>。以后按要求重新编码。Strpos有助于查看子字符串是否存在,但我认为这种分解是一种更优雅的方法来实际提取它们。OP说,无空格的'&
不能用作分隔符。见MattS的答案。如果我认为这个答案会有所不同的话,我会投反对票。Strpos有助于查看子字符串是否存在,但我认为这种分解是一种更优雅的方法来实际提取它们。OP说,spaceless'&
不能用作分隔符。见MattS的答案。如果我认为这个答案会有所不同,我会投反对票。