PHP の正規表現は特殊であり、非常にわかりにくいです。 。 。
次の 2 行のデータを抽出します
123[test] abc c1 c2 c3
456 def d1[test] d2 d3
改行とスペースで区切ります
に抽出する必要があります123, abc,c1 c2 c3
456,def,d1 d2 d3
データの途中に [*] がある可能性がありますが、これは無視する必要があります
preg_match_all 一致する式を要求します
----- -解決策--------------------
preg_match_all または preg_replace が必要ですか?
何が起こっていますか?それらのカンマで?最後の 3 つにカンマがないのはなぜですか?
------解決策------------------
定期的には、いいえ。 。
$str = '123[テスト] abc c1 c2 c3 456 def d1[テスト] d2 d3'; $ar = split("[nr]+",$str); $ar1 =explode(' ',$ar[0]); $ar2 =explode(' ',$ar[1]); 関数 fmt($ar) { foreach($ar as $k => $v) $ar[$k] = preg_replace('/[.*]/','',$v); $ar を返します。 } $ar1 = fmt($ar1); $ar2 = fmt($ar2); $str = implode(' ',$ar1)."n".implode(' ',$ar2); echo "<pre class="brush:php;toolbar:false">{$str}"; /* //出力 123 abc c1 c2 c3 456 デフ d1 d2 d3 */ <br><font color="#e78608">------解決策---------</font><br>
$str = '123[テスト] abc c1 c2 c3 456 def d1[テスト] d2 d3 789 ギ[sfjsldf] z1 z2 z3'; $ar = split("[nr]+",$str); $arTMP = 配列(); foreach($ar as $v) $arTMP[] =explode(' ',$v); 関数 fmt($ar) { foreach($ar as $k => $v) $ar[$k] = preg_replace('/[.*]/','',$v); $ar を返します。 } foreach($arTMP as $k => $v) $arTMP[$k] = implode(' ',fmt($v)); $str = implode("n",$arTMP); echo "<pre class="brush:php;toolbar:false">{$str}"; /* //出力 123 abc c1 c2 c3 456 デフ d1 d2 d3 789 ギ z1 z2 z3 */ <br><font color="#e78608">------解決策---------</font><br>こんにちは。 。規則的なルールを見るたびにめまいを感じます。 。 <br>
$str = '123[テスト] abc c1 c2 c3 456 def d1[テスト] d2 d3 789 ギ[sfjsldf] z1 z2 z3'; $str = preg_replace('/[.*]/','',$str); echo "<pre class="brush:php;toolbar:false">{$str}"; /* //出力 123 abc c1 c2 c3 456 デフ d1 d2 d3 789 ギ z1 z2 z3 */ <div class="clear"></div>