如何在PHP中的特定单词后修剪字符串?

时间:2018-10-04 06:08:02

标签: php

我想在特定字词后修饰字符串。请检查我在做什么:

$str = "kids-story-in-chaper2.php";
$rest = substr($str, 0, strpos($str, 'in'));

我在这里期望输出: -chapter2.php

但是没有任何效果。

我要在“插入”后进行修剪,我也尝试

substr($str,11);        

//工作正常,但是字符串是动态的,因此我必须在“ in”之后进行修剪。因此失败了。

任何想法或建议都会受到欢迎。

6 个答案:

答案 0 :(得分:1)

您可以找到单词并将其位置插入substr函数中

$str = "kids-story-in-chaper2.php";
$separator = 'in';
$pos = strpos($str, $separator) + strlen($separator);
$rest = substr($str, $pos);

答案 1 :(得分:0)

如果您确定字符串只有一个-in-,则可以explode()字符串。并使用array_pop()end()获取最后一个元素。

$str = "kids-story-in-chaper2.php";
$res = explode('-in-', $str);
$res = array_pop($res);
echo $res;

//output
chapter2.php

答案 2 :(得分:0)

这对您有用吗?

$str = "kids-story-in-chaper2.php";
$rest = end(explode('-in', $str));

答案 3 :(得分:0)

$str = "kids-story-in-chaper2.php";
$rest = substr($str, strpos($str, 'in')+2);

答案 4 :(得分:0)

尝试这个

<?php
$str = "kids-story-in-chaper2.php";
echo $str = substr($str, strpos($str, 'in-')+3);

output,您可以在此处查看

答案 5 :(得分:0)

我通常会尽量避免使用正则表达式,但是在这种情况下,我相信正则表达式是最好的选择,因为如果字符串中缺少“ in”一字,它不会失败,就像其他解决方案一样。
正则表达式将获取$ find之后的所有内容,并将其保存到$ match数组中。

$str = "kids-story-in-chaper2.php";
$find = "in";
preg_match("/". preg_quote($find) . "(.*)/", $str, $match);
if(isset($match[1])) echo $match[1];

https://3v4l.org/Blqua