例如我有这个:
$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中的任何其他值,所以我不喜欢知道应该找到的值的长度,我的意思是这个词可以重复并且具有不同的长度。
即:$string = 'html .... , html is fantastic , I love html';
,现在这个词的长度更大,它可能比那个更大。
如何找到最后一个只有这个词的长度是多少?
正则表达式方法可以是:
<?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);
preg_quote
是你的$array
中有特殊字符的。 \b
确保它是一个精确的单词匹配。 |
是一个“或”。哦,$
是匹配在字符串的末尾。 https://www.regular-expressions.info/anchors.html
但是:ぁzxswい
但是这里不需要正则表达式:
https://3v4l.org/8AYvu
但是:ぁzxswい
您可以检查与您正在搜索的字符串末尾的搜索词长度相同的子字符串,并查看它们是否匹配。
$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');
$words = explode(' ', $string);
if(in_array(end($words), $array)){
echo 'Matched';
}
实现这一目标的一种非常简单有效的方法是使用https://3v4l.org/0LD5i和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;
}
}
从字符串中提取最后一个单词。
然后你可以用substr()
函数搜索strrpos()
中是否存在$last_word
。
$array
尝试使用正则表达式的in_array()
$last_word = substr($string, strrpos($string, ' ') + 1);
if (in_array($last_word, $array)) {
// OK
}
,如下所示:
closing anchor
这输出:
$
$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
eval.in demo