爆炸串两个字符串

问题描述:

我有串:爆炸串两个字符串

$local->string = '@John Smith: I have: milk, cookies and wine'; 

而且我想这爆炸两个字符串。首先是'约翰史密斯',第二'我有:牛奶,饼干和葡萄酒'。我可以使用爆炸,但是当我写:

explode(':', $local->string); 

我得到:

  1. @约翰史密斯

  2. (空间),我有

  3. (空间)牛奶,饼干和酒

我知道这是导致这个正则表达式的方式,但我不知道正则表达式: -/

请帮我:)

+0

添加额外的参数,指定分割后的最大元素数量,例如2在这里。 – Joost

+0

学习正则表达式怎么样? :P – kapa

+0

'$ e = explode(':',$ local-> string);' 'echo $ e [0]。$ e [1]''echo $ e [2]' – samayo

这不应该与一个正则表达式是太辛苦了。假设你的字符串是总是@<name>: <text>,那么你可以试试这个:

/@(.*?): (.*)/ 

然后你就可以使用与preg_match()

if(preg_match('/@(.*?): (.*)/', $local->string, $match) > 0){ 
    // These will be your matched groups 
    echo $match[1]; // the name 
    echo $match[2]; // the text 
} 
+0

我爱你:-)) –

+0

Awww .... shucks \ *腮红*。很高兴我能帮上忙! :-) –

使用功能的$limit参数,你可以在documentation发现:

$local->string = '@John Smith: I have: milk, cookies and wine'; 
$temp = explode (':', $local -> string, 2); 

如果你想学习正则表达式(这是一个好主意),访问这个页面:http://regexone.com/。伟大的教程。但是,请始终记住确保您知道哪些工具在哪个时间使用。在这种情况下,explode(...)功能显然足以满足您的需求。

+0

它需要两个:) – Joost

+0

我忘了第三个参数'explode()'! +1 –

explode(':', $local->string, 2); 

只看文档:)

你不需要为正则表达式。只要搜索的:字符的第一个位置:

$local->string = '@John Smith: I have: milk, cookies and wine'; 
$pos = strpos($local->string, ':'); 

if (false !== $pos) { 
    $firstPart = substr($local->string, 0, $pos); 
    $secondPart = substr($local->string, $pos + 1); 
} 

您可以通过极限爆炸,会做这项工作的第三个参数。

$split = explode(':', '@John Smith: I have: milk, cookies and wine', 2); 
echo $split[1]; //output ' I have: milk, cookies and wine' 

你只需要去掉@和第一空间,即去掉第一个字符中的每个分割

如果你不知道正则表达式保持简单

$string = '@John Smith: I have: milk, cookies and wine'; 

$t = explode(':', $string, 2); 

$t[0] = str_replace('@', '', $t[0]); 
$t[1] = str_replace(':', '', $t[1]); 
$t[1] = trim($t[1]); 

所以

Array 
(
    [0] => John Smith 
    [1] => I have milk, cookies and wine 
) 

已经有一个答案我会提供另一种解决方案:

$string = '@John Smith: I have: milk, cookies and wine'; 
list($name, $items) = explode(":", $string, 2); 

这将分配$name的第一部分,和$items第二。如果你不想返回一个数组并且知道总会有X个结果(在这种情况下是2),这可能很有用。