私は確信しているので、Regex!= 42私はうまくいかない正規表現を作った。
要するに、文字列に最初の-
が見つかり、位置を保存します。
これ以前のものは$ partですが、すべてstr_replaceを使って[() and space
をすべて削除しています。この部分が空の場合
はその後、その後何の数はそうそれは少し複雑だが、それは正規表現を使用していないので、それは速いかもしれ0
を追加する最初の-
の前には存在しません。しかし計算の最初に[() and space
以外の記号を使用する場合は、それらを削除する配列に追加する必要があります。
私はそれについて考えているかもしれません+-/*
はそこにあるはずです。
$formula = '[ (((-594 - 0))/ 55032411) *244 ]';
$pos = strpos($formula, "-");
$part = str_replace(array("(",")","["," "), array("","","",""),substr($formula, 0, $pos));
If($part ==""){
$formula = substr($formula, 0,$pos) ."0". substr($formula, $pos);
}
Echo $formula;
私はそれが複雑だと認めますが、私は正規表現以外の解決策を作りたいと思っていました。
https://3v4l.org/TaSjr
あなたは空の 'str_replace()'の二番目のパラメータを作ることができます4要素配列の代わりに文字列を使用します。 – mickmackusa
@mickmackusaはそれを知らなかった。私はあなたが配列を持っていれば、置き換え時に配列が必要だと思ったと思った。 – Andreas
すべての置換えが同じなら、このようにして凝縮することができる。あなたのRegex!= 42はどういう意味ですか? – mickmackusa