我想在冒号后创建一个从文件中抓取每一行的函数。我无法在字符处切换字符串。
所以我想把它分开:
"日期:2017年3月27日"到2017年3月27日" "开始:12:30 pm"到"下午12:30" ...等
注意:我不需要帮助编写实际功能,我只想知道如何在第一个冒号处拼接线
答案 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建议的那样,使用strpos
和substr
的解决方案:
$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
之后停止