使用PHP中的正则表达式从String中搜索和提取

时间:2015-03-26 22:27:09

标签: php regex string

我在PHP中有以下字符串:

$cars = "Ford Chevrolet Dodge Chrysler";

我需要输出哪些单词具有各种属性,例如:哪个单词结束于' let'?或者哪个单词以' Fo'?

开头

我不确定如何处理这个问题。我对正则表达式格式很熟悉,并且我已经使用preg_match来识别匹配,但这只是在1或0中给出的结果。

那么我应该使用空格作为分隔符来分割单词并分别搜索每个单词的匹配项?或者有更简单的方法来解决这个问题吗?

我知道preg_split函数,但我不知道如何实际访问拆分字符串。

$cars = "Ford Chevrolet Dodge Chrysler";
$param1 = '/(let)+/';
$param2 = '/(fo)+/';

echo preg_match($param1, $cars);
echo preg_match($param2, $cars);

我知道这不起作用,但它打印出1和verifys给我,找到两个参数的匹配。我只是不知道如何提取完整的雪佛兰'和福特'福特'分别为参数1和2。

1 个答案:

答案 0 :(得分:2)

我相信你能够弄清楚如何将用户输入插入变量$start$end - 以防万一:询问他们是否需要输入字符串at在开头或结尾,根据答案,保存字符串以搜索$start$end

$string = "Ford Chevrolet Dodge Chrysler";
$start = "";
$end = "let";

if(!empty($start))
    preg_match_all("#" . $start . "\w+#", $string, $matches);
elseif(!empty($end))
    preg_match_all("#\w+" . $end ."#", $string, $matches);
else
    die("Nothing has been set!");

print_r($matches);

这是针对示例字符串中以let结尾的所有单词实现的情况。请记住,正则表达式只会匹配单词字符。如果您要获得更复杂的字符串,可能应该创建另一个解决方案。


要简单地回显所有匹配项,请使用这样的foreach循环而不是print_r函数:

if(!empty($matches))
{
    foreach($matches as $match)
        echo $match . "<br>";
}
else
    die("Nothing matched!");