我使用php preg_match来匹配第一个&带有给定第一个&的变量中的最后一个单词最后一个具体的词,
示例:
$first_word = 't'; // I want to force 'this'
$last_word = 'ne'; // I want to force 'done'
$str = 'this function can be done';
if(preg_match('/^' . $first_word . '(.*)' . $last_word .'$/' , $str))
{
echo 'true';
}
但问题是我想强制匹配整个单词(开始和结束)而不是第一个或最后一个字符。
答案 0 :(得分:3)
我会以稍微不同的方式解决这个问题:
$firstword = 't';
$lastword = 'ne';
$string = 'this function can be done';
$words = explode(' ', $string);
if (preg_match("/^{$firstword}/i", reset($words)) && preg_match("/{$lastword}$/i", end($words)))
{
echo 'true';
}
==========================================
这是实现同样目标的另一种方式
$firstword = 'this';
$lastword = 'done';
$string = 'this can be done';
$words = explode(' ', $string);
if (reset($words) === $firstword && end($words) === $lastword)
{
echo 'true';
}
这总是如此,因为我们知道firstword和lastword是正确的,尝试将它们更改为其他内容并且它不会回显为真。
答案 1 :(得分:3)
在搜索中使用 \ b 作为boudary word 限制:
$first_word = 't'; // I want to force 'this'
$last_word = 'ne'; // I want to force 'done'
$str = 'this function can be done';
if(preg_match('/^' . $first_word . '\b(.*)\b' . $last_word .'$/' , $str))
{
echo 'true';
}
答案 2 :(得分:0)
我写了一个函数来获取句子的开头,但它不是任何正则表达式 你可以写这样的结尾。我没有为最终添加功能,因为它很长......
<?php
function StartSearch($start, $sentence)
{
$data = explode(" ", $sentence);
$flag = false;
$ret = array();
foreach ($data as $val)
{
for($i = 0, $j = 0;$i < strlen($val), $j < strlen($start);$i++)
{
if ($i == 0 && $val{$i} != $start{$j})
break;
if ($flag && $val{$i} != $start{$j})
break;
if ($val{$i} == $start{$j})
{
$flag = true;
$j++;
}
}
if ($j == strlen($start))
{
$ret[] = $val;
}
}
return $ret;
}
print_r(StartSearch("th", $str));
?>