Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,用符号和分解字符串_Php_Strpos_Ampersand - Fatal编程技术网

PHP,用符号和分解字符串

PHP,用符号和分解字符串,php,strpos,ampersand,Php,Strpos,Ampersand,我已经花了很多时间在网上搜索这个,所以在有人因为我不看而责骂我之前。。。相信我,我有 问题是:我正在使用一个包含一个符号和的字符串来显示两个名称。困难:有时我可能需要拉左边的名字,或者拉右边的名字来显示。另一个困难是,一些名称可能包括HTML实体,当然也使用符号 示例:我可以使用以下简单的方法: “弗雷德和威尔玛” 为了从字符串中得到“Fred”,我尝试使用PHP函数STRPOS(),但什么也没有得到 $nPos = strpos( " & ", $names ); 注意,我在两侧使用

我已经花了很多时间在网上搜索这个,所以在有人因为我不看而责骂我之前。。。相信我,我有

问题是:我正在使用一个包含一个符号和的字符串来显示两个名称。困难:有时我可能需要拉左边的名字,或者拉右边的名字来显示。另一个困难是,一些名称可能包括HTML实体,当然也使用符号

示例:我可以使用以下简单的方法:

“弗雷德和威尔玛”

为了从字符串中得到“Fred”,我尝试使用PHP函数STRPOS(),但什么也没有得到

$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的答案。如果我认为这个答案会有所不同,我会投反对票。