Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在字符串末尾搜索数组中存在的文本?_Php_Arrays_Regex - Fatal编程技术网

Php 如何在字符串末尾搜索数组中存在的文本?

Php 如何在字符串末尾搜索数组中存在的文本?,php,arrays,regex,Php,Arrays,Regex,例如,我有: $string = 'PHP is a server side web programming language , PHP is amazing , I love PHP'; $array = array('html','css','javascript','ajax','html5','css3','jquery','PHP'); foreach($array as $ar){ //Check if one of the $array values exists in

例如,我有:

$string = 'PHP is a server side web programming language , PHP is amazing , I love PHP';

$array = array('html','css','javascript','ajax','html5','css3','jquery','PHP');

foreach($array as $ar){
   //Check if one of the $array values exists in the $string
}
我只想从$string的末尾进行搜索,因此如果$array值不在末尾,那么就不会发生任何事情,因为它不存在,PHP可以是$array中的任何其他值,因此我不知道该值的长度,我的意思是该词可以重复,并且具有不同的长度

i、 e:
$string='html,html太棒了,我喜欢html',,
现在这个词的长度更大了,它可能比这个还要大

如何仅查找单词长度的最后一个?

尝试使用regex的
$
如下:

$string = 'PHP is a server side web programming language , PHP is amazing , I love PHP';

$array = ['html', 'css', 'javascript', 'ajax', 'html5', 'css3', 'jquery', 'PHP'];

foreach ($array as $ar) {
    // Check if one of the $array values exists in the $string
    if (preg_match("/$ar$/", $string)) {
        echo "Found $ar at the end of \$string";
        break;
    }
}
这将产生:

Found PHP at the end of $string

尝试使用regex的
$
如下:

$string = 'PHP is a server side web programming language , PHP is amazing , I love PHP';

$array = ['html', 'css', 'javascript', 'ajax', 'html5', 'css3', 'jquery', 'PHP'];

foreach ($array as $ar) {
    // Check if one of the $array values exists in the $string
    if (preg_match("/$ar$/", $string)) {
        echo "Found $ar at the end of \$string";
        break;
    }
}
这将产生:

Found PHP at the end of $string

正则表达式方法可以是:

<?php
$string = 'PHP is a server side web programming language , PHP is amazing , I love PHP';
$array = array('html','css','javascript','ajax','html5','css3','jquery','PHP');
$escaped_array = array_map(function($value){
    return preg_quote($value, '/');
}, $array);
$regex = '/\b(' . implode('|', $escaped_array) . ')\b$/';
preg_match($regex, $string, $match);
print_r($match);

演示:

正则表达式方法可以是:

<?php
$string = 'PHP is a server side web programming language , PHP is amazing , I love PHP';
$array = array('html','css','javascript','ajax','html5','css3','jquery','PHP');
$escaped_array = array_map(function($value){
    return preg_quote($value, '/');
}, $array);
$regex = '/\b(' . implode('|', $escaped_array) . ')\b$/';
preg_match($regex, $string, $match);
print_r($match);

演示:

实现这一点的一种非常简单有效的方法是使用并从字符串中提取最后一个单词

然后,您可以使用函数搜索
$last\u word
是否存在于
$array

$last_word = substr($string, strrpos($string, ' ') + 1);

if (in_array($last_word, $array)) {
    // OK
}

实现这一点的一个非常简单有效的方法是使用并从字符串中提取最后一个单词

然后,您可以使用函数搜索
$last\u word
是否存在于
$array

$last_word = substr($string, strrpos($string, ' ') + 1);

if (in_array($last_word, $array)) {
    // OK
}

您可以在正在搜索的字符串末尾检查与搜索词长度相同的子字符串,并查看它们是否匹配

foreach ($array as $ar) {
    // negative number in substr will take a substring that many characters from the end
    if ($ar == substr($string, -strlen($ar))) {
        // found it.
        break;
    }
}

您可以在正在搜索的字符串末尾检查与搜索词长度相同的子字符串,并查看它们是否匹配

foreach ($array as $ar) {
    // negative number in substr will take a substring that many characters from the end
    if ($ar == substr($string, -strlen($ar))) {
        // found it.
        break;
    }
}
你可以用

你可以用


如果您可以确保$string始终包含人类可读的内容,并因此被空格分隔,那么可以首先在空格上分解该字符串,然后检查结果数组的最后一个元素是否存在于单词列表中

这样的事情应该解决了:

<?php
    $elements = explode(" ", $string);
    $suspect = end($elements);
    if(in_array($suspect, $array)){
        echo "The string '".$suspect."' was found in the string.";
    }
?>

如果您可以确保$string始终包含人类可读的内容,因此以空格分隔,则可以首先在空格上分解字符串,然后检查结果数组的最后一个元素是否存在于单词列表中

这样的事情应该解决了:

<?php
    $elements = explode(" ", $string);
    $suspect = end($elements);
    if(in_array($suspect, $array)){
        echo "The string '".$suspect."' was found in the string.";
    }
?>

听起来这就是你要找的。这里有答案吗?听起来这就是你要找的。这里的答案有用吗?如果“PHP”最后不存在,但在其他地方,会发生什么?Joe It找不到它。你可以尝试在演示中分叉eval.in,然后在那里乱搞
$string
。如果“PHP”最后不存在,但在其他地方,会发生什么呢?@Joe It找不到它。您可以尝试在演示中分叉eval.in,并在其中混用
$string