0

我想在 php 中搜索一个子字符串,以便它位于给定字符串的末尾。例如,在字符串“abd def”上,如果我搜索 def,它将在末尾,所以返回 true。但是如果我搜索 abd 它将返回 false ,因为它不在末尾。

是否可以?

4

5 回答 5

1

您可以为此使用preg_match :

$str = 'abd def';
$result = (preg_match("/def$/", $str) === 1);
var_dump($result);
于 2013-08-28T05:41:19.910 回答
1

一种替代方法,不需要通过分隔符或正则表达式进行拆分。这将测试最后一个x字符是否等于测试字符串,其中x等于测试字符串的长度:

$string = "abcdef";
$test = "def";

if(substr($string, -(strlen($test))) === $test)
{
    /* logic here */
}
于 2013-08-28T05:57:44.607 回答
0

假设整个单词:

$match = 'def';
$words = explode(' ', 'abd def');

if (array_pop($words) == $match) {
  ...
}

或使用正则表达式:

if (preg_match('/def$/', 'abd def')) {
  ...
}
于 2013-08-28T05:39:05.830 回答
0

无论完整的单词或其他任何内容,这个答案都应该是完全可靠的

$match = 'def';
$words = 'abd def';

$location = strrpos($words, $match); // Find the rightmost location of $match
$matchlength = strlen($match);       // How long is $match

/* If the rightmost location + the length of what's being matched
 * is equal to the length of what's being searched,
 * then it's at the end of the string
 */
if ($location + $matchlength == strlen($words)) {
    ...
}
于 2013-08-28T05:45:54.590 回答
0

请看strrcr()函数。像这样试试

$word   = 'abcdef';
$niddle = 'def';
if (strrchr($word, $niddle) == $niddle) {
    echo 'true';
} else {
    echo 'false';
}
于 2013-08-28T05:55:01.733 回答