我需要一个函数来返回两个单词(或两个字符)之间的子字符串。我想知道是否有一个php函数可以做到这一点。我不想考虑正则表达式(嗯,我可以这样做,但我真的不认为这是最好的方法)。思考strpos
和substr
函数。下面是一个例子:
$string = "foo I wanna a cake foo";
我们调用该函数:$substring = getInnerSubstring($string,"foo");
它返回:“我想要一个蛋糕”。
更新:到目前为止,我只能在一个字符串中获得两个单词之间的子字符串,您是否允许我再深入一点,并询问我是否可以扩展getInnerSubstring($str,$delim)
的使用,以获得介于delim值之间的任何字符串,例如:
$string =" foo I like php foo, but foo I also like asp foo, foo I feel hero foo";
我得到一个像{"I like php", "I also like asp", "I feel hero"}
这样的数组。
发布于 2012-03-23 00:39:25
如果字符串不同(即foo和/foo),请看贾斯汀·库克的this post。我将他的代码复制到下面:
function get_string_between($string, $start, $end){
$string = ' ' . $string;
$ini = strpos($string, $start);
if ($ini == 0) return '';
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}
$fullstring = 'this is my [tag]dog[/tag]';
$parsed = get_string_between($fullstring, '[tag]', '[/tag]');
echo $parsed; // (result = dog)
发布于 2014-06-12 23:10:15
正则表达式是最好的选择:
$str = 'before-str-after';
if (preg_match('/before-(.*?)-after/', $str, $match) == 1) {
echo $match[1];
}
发布于 2013-02-22 06:59:55
function getBetween($string, $start = "", $end = ""){
if (strpos($string, $start)) { // required if $start not exist in $string
$startCharCount = strpos($string, $start) + strlen($start);
$firstSubStr = substr($string, $startCharCount, strlen($string));
$endCharCount = strpos($firstSubStr, $end);
if ($endCharCount == 0) {
$endCharCount = strlen($firstSubStr);
}
return substr($firstSubStr, 0, $endCharCount);
} else {
return '';
}
}
示例用法:
echo getBetween("abc","a","c"); // returns: 'b'
echo getBetween("hello","h","o"); // returns: 'ell'
echo getBetween("World","a","r"); // returns: ''
https://stackoverflow.com/questions/5696412
复制相似问题