Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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_Regex_String - Fatal编程技术网

在PHP中使用正则表达式搜索和提取字符串

在PHP中使用正则表达式搜索和提取字符串,php,regex,string,Php,Regex,String,我在PHP中有以下字符串: $cars = "Ford Chevrolet Dodge Chrysler"; 我需要输出哪些单词具有各种属性,例如:哪个单词以“let”结尾?或者哪个词以“Fo”开头 我不确定如何处理这个问题。我对正则表达式格式非常熟悉,我已经获得了preg_匹配来识别匹配,但这只是1或0中给出的结果 那么,我是否应该使用空格作为分隔符来分割单词,并逐个搜索匹配项?还是有更简单的方法 我知道preg_split函数,但我不知道如何实际访问分割字符串 $cars = "Ford

我在PHP中有以下字符串:

$cars = "Ford Chevrolet Dodge Chrysler";
我需要输出哪些单词具有各种属性,例如:哪个单词以“let”结尾?或者哪个词以“Fo”开头

我不确定如何处理这个问题。我对正则表达式格式非常熟悉,我已经获得了preg_匹配来识别匹配,但这只是1或0中给出的结果

那么,我是否应该使用空格作为分隔符来分割单词,并逐个搜索匹配项?还是有更简单的方法

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

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

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

我知道这不起作用,但它会打印1s并向我验证两个参数是否匹配。我只是不知道如何分别为参数1和2提取完整的“雪佛兰”和完整的“福特”

我确信您将能够找出如何将用户输入插入变量
$start
$end
——以防万一:询问他们是希望输入字符串在开头还是结尾,然后根据答案,保存字符串以搜索
$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!");
if(!empty($matches))
{
foreach($matches作为$match进行匹配)
echo$match。“
”; } 其他的 死(“没有匹配!”;
显示您的
preg\u match()
code。使用
preg\u match\u all($regex,$input,$matches)。如果有匹配项,
$matches
将是一个多维数组,请使用
打印($matches)
来获得一个想法…@HamZa我已经尝试过了,但这只显示了“let”而不是完整的雪佛兰字样。@Burninrock24查看我的answer@l在这种情况下我需要使用正则表达式,否则我早就这么做了。太好了,太好了。因此,我得到了输出数组([0]=>Array([0]=>Chevrolet)),我如何引用“Chevrolet”以便在简单的echo语句中使用?@Burninrock24检查编辑器是否有意义。非常感谢。另一个简单的问题,正则表达式中的符号是什么?我知道开始和结束被连接到它们,但我在有限的时间内没有使用php和正则表达式的经验。
符号基本上相当于开始和结束时的
/
<代码>预匹配(“#。*#”,$string)
preg_match(“/.*/”,$string)相同。对于我来说,英镑符号更容易理解。@Burninrock24如果你对结果满意,请接受答案。