PHP - 如何拼接某个字符的字符串?

时间:2017-03-15 23:23:44

标签: php substring

我想在冒号后创建一个从文件中抓取每一行的函数。我无法在字符处切换字符串。

所以我想把它分开:

"日期:2017年3月27日"到2017年3月27日" "开始:12:30 pm"到"下午12:30" ...等

注意:我不需要帮助编写实际功能,我只想知道如何在第一个冒号处拼接线

5 个答案:

答案 0 :(得分:2)

对于您的情况,请使用:$string="date: march 27, 2017";$string="start: 12:30pm";

您可以选择以下任何一种技术:

*注意:如果担心针的存在(冒号冒号空间),那么你应该使用其中一个防伪的选项,否则,在没有针的情况下捕捉琴弦就需要额外考虑。

使用strpos()& substr() *假证明:

$string=($pos=strpos($string,": "))?substr($string,$pos+2):$string;

使用strstr()& substr() *假证明:

$string=($sub=strstr($string,": "))?substr($sub,2):$string;

使用explode() *要求冒号空间存在:

$string=explode(': ',$string,2)[1];

使用explode()& end() *不再是单行,而是假证明:

$array=explode(': ',$string,2);
$string=end($array);
// nesting explode() inside end() will yield the following notice:
// NOTICE Only variables should be passed by reference

preg_replace()使用a regex pattern *防错:

$string=preg_replace("/(^.*?:\s)/","",$string);

preg_match()使用a regex pattern而不是单行,但是可以防错:

preg_match("/^.*?:\s(.*)/",$string,$captured);
$string=(sizeof($captured))?end($captured):$string;

使用str_replace() *不是单行,而是假证明:

$search=array("date: ","start: ");
$replace="";
$count=1;
$string=str_replace($search,$replace,$string,$count);

对于任何想要在自己的雪花盒上进行测试的人来说,这是一个Demo

答案 1 :(得分:1)

正如@ chris85建议的那样,使用strpossubstr的解决方案:

$date = "date: march 27, 2017";
$yourString = $date;
//get the position of `:`
if(strpos($date, ":")!==false) {
    //get substring    
    $yourString = substr($date, strpos($date, ":") + 1);    
}
echo $yourString;

修改

根据@mickmackusa评论,上面的答案可能在提取的文本之前有空格,以便克服它你可以使用:

$yourString = ltrim($yourString)

答案 2 :(得分:0)

使用strstr - http://php.net/manual/en/function.strstr.php

应该喜欢接近

的东西
$str = 'date: march 27, 2017';
$str = strstr($str, ':');
$str = trim(substr($str, 1));

var_dump($str);
string(14) "march 27, 2017"

没有测试过,但根据文档,它应该做的伎俩

答案 3 :(得分:0)

这是一个简单的解决方案:

var_dump(explode(':', "date: march 27, 2017", 2));

这将输出以下内容:

array(2) {
  [0]=>
  string(4) "date"
  [1]=>
  string(15) " march 27, 2017"
}

然后,您拥有 [1] 索引中的值,并且您在 [0] 索引中有一个开头。这将允许您在需要时执行其他逻辑。

然后,您可以对该值调用 trim()以删除任何空格。

答案 4 :(得分:-1)

您可以includes http://php.net/manual/en/function.explode.php

explode

然后拼接数组http://php.net/array_splice

使用: http://php.net/manual/en/function.implode.php

恢复字符串

另见:How to splice an array to insert array at specific position?

implode

编辑:

如果您只想删除日期:您可以使用第二个参数作为过滤器修剪它。http://php.net/manual/en/function.trim.php

$x=explode(':',$string);
array_splice($x, 1, 0, ['text_Added']);
$string = implode($x);

甚至只是str_replace它。使用第4个参数,1在第一个替换http://php.net/manual/en/function.str-replace.php

之后停止