strpos需要其他东西

时间:2016-10-26 01:36:45

标签: php string

我有这样的字符串 -

$existingStr = "Test# 123456 Opened by System";

我想要3个不同的字符串部分 -

1st part : Test#
2nd part : 123456
3rd part : rest of the part

因此,首先我得到哈希的位置然后我从增量哈希位置值寻找空间位置,但它没有给我下一个空间位置。

代码 -

echo $existingStr."<br>";
$strhashPos = strpos($existingStr,"#");
echo $strhashPos."<br>";
$strincementhashPos = $strhashPos + 1;
echo $strincementhashPos ."<br>";

$strspacePos = strpos($existingStr,' ',$strincementhashPos);
echo $strspacePos."<br>";

$tempWOId = $strspacePos-$strincementhashPos;
echo $tempWOId."<br>";

$strFirstPart = substr($existingStr,0,$strincementhashPos);
echo $strFirstPart."<br>";

$strSecondPart = substr($existingStr,$strincementhashPos,$tempWOId);
echo $strSecondPart."<br>";

$strThirdPart = substr($existingStr,$strspacePos,-1);
echo $strThirdPart."<br>";

由于它给了我错误的$ strSecondPart ...有人可以告诉我下一个空间位置有什么问题。还建议一些优化或替代......

2 个答案:

答案 0 :(得分:1)

您可以使用php explode() function

  

返回一个字符串数组,每个字符串都是字符串的子字符串,通过在字符串分隔符形成的边界上将其拆分而形成。

即。 :

>>> import nltk
>>> nltk.download('vader_lexicon')
>>> from nltk.sentiment.vader import SentimentIntensityAnalyzer
>>> sid = SentimentIntensityAnalyzer()
>>> sid.polarity_scores('happy')
{'neg': 0.0, 'neu': 0.0, 'pos': 1.0, 'compound': 0.5719}
>>> sid.polarity_scores('sad')
{'neg': 1.0, 'neu': 0.0, 'pos': 0.0, 'compound': -0.4767}
>>> sid.polarity_scores('sad man')
{'neg': 0.756, 'neu': 0.244, 'pos': 0.0, 'compound': -0.4767}
>>> sid.polarity_scores('not so happy')
{'neg': 0.616, 'neu': 0.384, 'pos': 0.0, 'compound': -0.4964}

然后要捕获字符串的其余部分,请使用array_slice()implode()函数:

php > $existingStr = "Test# 123456 Opened by System";
php > $strToArr = explode(' ', $existingStr);
php > $strFirstPart = $strToArr[0];
php > echo $strFirstPart . "<br />";
Test#<br />
php > $strSecondPart = $strToArr[1];
php > echo $strSecondPart . "<br />";
123456<br />

希望它有所帮助。

编辑

遵循@Evert注释:php > $strThirdPart = implode(" ", array_slice($strToArr, 2)); php > echo $strThirdPart; Opened by System 函数可以使用第三个参数来定义限制。这提供了一个很好的捷径!

即。 :

explode()

输出:

  

阵   (      [0] =&gt;测试#      [1] =&gt; 123456      [2] =&gt;由System打开   )

答案 1 :(得分:0)

<?php
$existingStr = "Test# 123456 Opened by System";
$items = explode(' ', $existingStr);
$first = $items[0];
$second = $items[1];
unset($items[0]);
unset($items[1]);
$third = join($items);
echo $first."\n";
echo $second."\n";
echo $third."\n";

结果如下:

localhost:~$ php -f aaaa
Test#
123456
OpenedbySystem