Php - 通过在字符串中爆炸来分割特定单词

时间:2017-04-05 12:56:33

标签: php split explode

我想从字符串中分割单词。例如,我的字符串是“在#name of god”中,我只需要“名字”!! 但是当我使用这个snipet时,请给我“上帝的名字”

$string = "In the #name of god";    
$word   = explode( '#', $string );
echo $word;

5 个答案:

答案 0 :(得分:5)

$string = "In the #name of god";

// Using `explode`
$word   = @reset(explode(' ', end(explode( '#', $string ))));
echo $word; // 'name'

// Using `substr`
$pos1 = strpos($string, '#');
$pos2 = strpos($string, ' ', $pos1) - $pos1;
echo substr($string, $pos1 + 1, $pos2);  // 'name'
  

注意:@功能之前的reset字符是Error Control Operators。使用带有非引用变量的end函数时,它可以避免显示警告消息,是的,这是一种不好的做法。您应该创建自己的变量并传递给end函数。像这样:

// Using `explode`
$segments = explode( '#', $string );
$segments = explode(' ', end($segments));
$word = reset($segments);
echo $word; // 'name'

答案 1 :(得分:1)

尝试正则表达式和preg_match

$string = "In the #name of god";
preg_match('/(?<=#)\w+/', $string, $matches);

print_r($matches);

输出:

Array ( [0] => name )

答案 2 :(得分:0)

修改

对不起,我刚才错了。

Explode将String转换为Array。 所以你的输出会产生[&#34;在&#34;,&#34;上帝的名字&#34;]。如果你想在它上面说一句话,你需要更具体地说明它是如何工作的。如果您只想在主题标签后面找到第一个单词,则应使用strpossubstr

    <table>
          <tr>
             <td>
          <img src="@Url.Action("ApplicationPieChart")" />
             </td>       
          </tr>
    </table>

答案 3 :(得分:0)

有几个选项(preg_match也可以帮助多个&#39;#&#39;)

<?php
//With Explode only (meh)
$sen = "In the #name of god";
$w = explode(' ', explode('#',$sen)[1])[0];

echo $w;

//With substr and strpos
$s = strpos($sen , '#')+1; // find where # is
$e = strpos(substr($sen, $s), ' ')+1; //find i
$w = substr($sen, $s, $e);

echo $w;

//with substr, strpos and explode
$w = explode(' ', substr($sen, strpos($sen , '#')+1))[0];
echo $w;

答案 4 :(得分:0)

在我自己的项目中,我当然会避免进行少量函数调用来复制一个 preg_ 函数调用所能完成的工作。

实际上,匹配文字 #,然后用 \K “忘记”它,然后匹配一个或多个非空白字符。如果字符串中有匹配项,则通过索引 0 访问完整字符串匹配项。

代码:(Demo)

$string = "In the #name of god";

echo preg_match('~#\K\S+~', $string, $match) ? $match[0] : '';
// output: name