0

我需要一种方法来获取字符串中特定子字符串之前的最后一个字符。我需要这个来检查它是否是特定子字符串之前的空格。

我正在寻找类似的功能:

function last_character_before( $before_what , $in_string )
{
    $p = strpos( $before_what , $in_string );

    // $character_before =  somehow get the character before

    return $character_before;
}

if( $last_character_before( $keyword , $long_string ) )
{
    // Do something
}
else
{
    // Do something
}
4

3 回答 3

2

如果您有匹配针的位置,您只需减去 - 1 即可获得之前的字符。如果位置为-1 或0,则前面没有字符。

function char_before($haystack, $needle) {
    // get index of needle
    $p = strpos($haystack, $needle);
    // needle not found or at the beginning
    if($p <= 0) return false;
    // get character before needle
    return substr($hackstack, $p - 1, 1);
}

执行:

$test1 = 'this is a test';
$test2 = 'is this a test?';

if(char_before($test1, 'is') === ' ') // true
if(char_before($test2, 'is') === ' ') // false

PS。我在战术上拒绝使用正则表达式,因为它们太慢了。

于 2013-09-09T12:32:22.297 回答
0

简单的方法:

$string = "finding last charactor before this word!";
$target = ' word';//note the space

if(strpos($string, $target) !== false){
 echo "space found ";
}
于 2013-09-09T12:32:54.713 回答
0
function last_character_before( $before_what , $in_string )
{
    $p = strpos( $before_what , $in_string );

    $character_before = substr(substr($in_string ,0,$p),-1);

    return $character_before;
}
于 2013-09-09T12:34:39.730 回答