如何在创建对象时包含此正则表达式?

时间:2016-12-22 09:03:41

标签: php regex laravel-5.3

在我的$plates = explode(';', $plates);之后,我想在创建新的$dossier时添加另一个正则表达式(在我的foreach中):

$minus = preg_replace('~[-]~', '', $license_plates);

我该怎么做?

这是我的代码:

public function addLicensePlates(Request $request)
{            
    $product_id = $request->input('product_id');

    $license_plates = $request->input('license_plates');

    $plates = preg_replace('~\s+|[.,:;*/_]~', ';', $license_plates); // \s+|[.,:;*/_]

    $plates = explode(';', $plates);

    foreach($plates as &$plate) {
        $dossier = new Dossier;
        $dossier->license_plate = trim($plate);
        $dossier->product_id = $product_id;
        $dossier->save();
    }
}

PS:我不想将-添加到$plates表达式,但是在爆炸之后。

1 个答案:

答案 0 :(得分:0)

我建议按如下方式编辑现有功能:

  • trim()稍后删除空值时,在输入字符串上使用preg_replace
  • 使用str_replace替换foreach块中的连字符。

请参阅PHP demo

$license_plates = "  WORD-HERE 36-LXD-5";
$plates = preg_replace('~\s+|[.,:;*/_]~', ';', trim($license_plates)); // trim the incoming value
$plates = explode(';', $plates);
foreach($plates as &$plate) {
    $license_plate = str_replace('-', '', $plate); // Remove hyphens
    echo $license_plate. "\n";
}

输出:WORDHERE36LXD5