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