如何在PHP中获取字符串后的字符串?
问题描述:
我有串象下面这样:如何在PHP中获取字符串后的字符串?
$str = '/test/test1/test2/test3/testupload/directory/';
现在我要取这么尝试了一些特定的字符串:
strstr($str, 'test3');
但我想针后获取价值?我能怎么做?
谢谢。
答
$str = '/test/test1/test2/test3/testupload/directory/';
$new_str = strstr($str, 'test3');
// Use this to get string after test3
$new_str = str_replace('test3', '', $new_str);
// $new_str value will be '/testupload/directory/'
答
你可以找出test3
指数,然后进行:
<?php
$str = '/test/test1/test2/test3/testupload/directory/';
$find = 'test3'; // Change it to whatever you want to find.
$index = strpos($str, $find) + strlen($find);
echo substr($str, $index); // Output: /testupload/directory/
?>
或爆炸()的阵列test3
,并找出最后一个元素。
<?php
$str = '/test/test1/test2/test3/testupload/directory/';
$find = 'test3'; // Change it to whatever you want to find.
$temp = explode($find, $str);
echo end(explode($find, $str));
?>
答
尝试
<?php
$str = '/test/test1/test2/test3/testupload/directory/';
$position = stripos($str, "test3");
if ($position !== false) {
$position += strlen("test3");
$newStr = substr($str, $position);
echo "$newStr";
} else {
echo "String not found";
}
?>
答
也可以用的preg_match()
preg_match("/test3\/(.*)/", $str, $output);
Echo $output[1];
用的preg_match做它是一条线的工作得到你想要的部分。
该模式搜索test3
和/
后,但/
需要转义\/
。
然后(.*)
表示匹配所有内容直到字符串结束。
输出[0]将完全匹配“test3/testupload ...”。
输出[1]只是您想要“testupload/...”的部分。
答
为什么不构建帮助函数。
这是我之前做的一个(完全不是艺术攻击参考)。
/**
* Return string after needle if it exists.
*
* @param string $str
* @param mixed $needle
* @param bool $last_occurence
* @return string
*/
function str_after($str, $needle, $last_occurence = false)
{
$pos = strpos($str, $needle);
if ($pos === false) return $str;
return ($last_occurence === false)
? substr($str, $pos + strlen($needle))
: substr($str, strrpos($str, $needle) + 1);
}
您可能已经注意到,此功能可让您选择在给定针的第一次或最后一次出现后返回内容。因此,这里的一对夫妇的使用情况:
$animals = 'Animals;cat,dog,fish,bird.';
echo str_after($animals, ','); // dog,fish,bird.
echo str_after($animals, ',', true); // bird.
我倾向于建立一个全球helpers.php
文件,其中包含与此类似的功能,我建议你做同样的 - 它使事情变得更轻松。
可能重复[获取文本后针?](http://stackoverflow.com/questions/2216710/get-text-after-needle) – Dhiraj
为什么不拆分字符串,然后挑选最后的数组值? – Abhishek
@BhumiShah在这里没有正确或有用的答案吗? – Andreas