1

simple に基づいて、定期的に文字列の一部を削除する必要がありますspecial characters like _ and |。これが私のコードです:

<?php
$text = "a*a1.zip,a2.zip|b*b1.zip|c*c1.zip|d*d1.zip|e*e1.zip|f*f1.zip|g*g1.zip|h*h1.zip";
$expl = explode("|", $text);
print_r($expl);
?>

alphabets and *'s, |'s出力が次のようになるように、すべてを削除する必要があります。

a1.zip,a2.zip,b1.zip,c1.zip,d1.zip,e1.zip,f1.zip,g1.zip,h1.zip

私は使用しようとしていますpreg_replaceが、理解するのは非常に難しい:(です。他の代替手段はありますか?前もって感謝します...

4

3 に答える 3

2

代わりにpreg_matchを使用できますが、正規表現を正しくする必要があるため、必ずしも簡単ではありません。正規表現なしで何かを使用したい場合は、二重爆発を試してください:

$text = "a*a1.zip,a2.zip|b*b1.zip|c*c1.zip|d*d1.zip|e*e1.zip|f*f1.zip|g*g1.zip|h*h1.zip";
$expl = explode("|", $text);
foreach ($expl as $part) {
    // PHP 5.4+
    $values[] = explode('*', $part)[1];

    // OR PHP < 5.4
    $tempvar = explode('*', $part);
    $values[] = $tempvar[1];

    // Choose one of the above, not both
}
$string = implode(',', $values);
于 2013-08-17T06:57:12.860 に答える
1

シングルライナーなしpreg_

$result_string = implode(',',array_map(function($v){return substr($v,strpos($v,'*')+1);},explode('|',$text)));
于 2013-08-17T07:23:53.067 に答える