我有字符串:
$local->string = '@John Smith: I have: milk, cookies and wine';
我想把它爆炸成两个字符串。第一个'约翰史密斯'和第二'我有:牛奶,饼干和葡萄酒'。我可以使用爆炸,但是当我写:
explode(':', $local->string);
我明白了:
@John Smith
(空格)我有
(空间)牛奶,饼干和葡萄酒
我知道这是结果的结果,但我不知道regexp: - /
请帮帮我:)
答案 0 :(得分:3)
使用该功能的$limit
参数,您可以在documentation中找到:
$local->string = '@John Smith: I have: milk, cookies and wine';
$temp = explode (':', $local -> string, 2);
如果您想学习正则表达式(这是一个好主意),请转到此页面:http://regexone.com/。很棒的教程。但是,请记住确保您知道在哪个时间使用哪些工具。在这种情况下,explode(...)
功能显然足以满足您的需求。
答案 1 :(得分:1)
explode(':', $local->string, 2);
只看文档:)
答案 2 :(得分:1)
这对正则表达式来说不应该太难。假设你的字符串总是 @<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
}
答案 3 :(得分:1)
已经有一个答案,我将提供另一种解决方案:
$string = '@John Smith: I have: milk, cookies and wine';
list($name, $items) = explode(":", $string, 2);
这将为第一部分分配$name
,为第二部分分配$items
。如果您不想返回一个数组并且知道总会有X结果(在这种情况下为2),这可能很有用。
答案 4 :(得分:0)
你不需要正则表达式。只需搜索:
字符的第一个位置:
$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);
}
答案 5 :(得分:0)
您可以将限制作为爆炸的第三个参数来传递。
$split = explode(':', '@John Smith: I have: milk, cookies and wine', 2);
echo $split[1]; //output ' I have: milk, cookies and wine'
您只需删除@和第一个空格,即删除每个分割中的第一个字符
答案 6 :(得分:0)
如果你不知道正则表达式,请保持简单
$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
)