ホームページ  >  記事  >  バックエンド開発  >  PHP の正規表現は特殊で非常にわかりにくいです。解決方法

PHP の正規表現は特殊で非常にわかりにくいです。解決方法

WBOY
WBOYオリジナル
2016-06-13 13:23:42825ブラウズ

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 つにカンマがないのはなぜですか?
------解決策------------------
定期的には、いいえ。 。

PHP コード
$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>
話し合う

それは不可能です、この中で次の正規表現が使用されています
preg_replace('/[.*]/','',$v);
行数が多くなってしまうためそれらを効率的に簡単に表現したい場合は、それを解決できます。

------解決策---------
行が多すぎても心配しないでください。上記のコードを少し変更すると、不規則な行データに適応できるようになります。
------解決策---------
PHP コード
$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>
PHP コード
$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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。