2016-08-18 11 views
0

をすべての行を置き換える:検索と私は次のように名前のアイテムを持つ大規模なリストの文字列を持っている複数行の文字列で

str = "f05cmdi-test1-name1 
f06dmdi-test2-name2"; 

だから、最初の4つの文字はランダムな文字列です。そして、私はこのような出力がしたい:あなたは文字列から最初の文字を見ることができるように

'mdi-test1-name1', 
'mdi-test2-name2', 

「を、すべての行がで終了する必要が」どのように、

を可能に交換する必要があります私は上記の文字列を以下の文字列に変更しますか?私は 'strstr'と 'str_replace'で私たちのために試しましたが、私はそれを働かせることはできません。私はそれが働くなら、それは私に多くの時間を節約するだろう。

あなたの助けを借りてくれてありがとう!

+0

正規表現に興味がありますか? –

答えて

1

が道であります仕事をする:

$input = "f05cmdi-test1-name1 
f05cmdi-test2-name2"; 

$result = preg_replace("/.{4}(\S+)/", "'$1',", $input); 
echo $result; 

ここで、\SはNONスペース文字を表します。

+0

これは素晴らしい作品です!追加する必要があったのは '$ s'の前に' mdi'だけでした。どうもありがとう! – Nick

0

EDIT:次の方法がより優れており、より信頼性が高く、4つの文字の可能な組み合わせに使用できるため、上記を削除しました。

開始文字として何百万もの異なる可能性がある場合、私はどうしますか?

私は唯一のスペースがだから、完全な文字列(文字列全体= "f05cmdi-test1-name1"

の間にあることがわかり、あなたの具体的な例では

に結果の
str = "f05cmdi-test1-name1 f06dmdi-test2-name2"; 
$result_array = []; 
// Split at the spaces 
$result = explode(" ", $str); 
foreach($result as $item) { 
    // If four random chars take string after the first four random chars 
    $item = substr($item, 5); 
    $result_array = array_push($result_arrray, $item); 
} 

$result_array = [ 
    "mdi-test1-name1", 
    "mdi-test2-name2", 
    "....." 
]; 

IF次のスタイルの単一の文字列を使用したいと考えています。

"'mdi-test1-name1','mdi-test2-name2','...'"

その後、あなたは、単に次の操作を実行できます。ここでは、あなたのより具体的なニーズに

$result_final = "'" . implode("','" , $result_array) . "'"; 
+0

ラファエルさんに感謝しますが、 'f09cmdi'または' f11dmdi'で始まる行もあることが分かりましたので、すべてが 'f05c'で始まるわけではありません。例えば、 '$ str =" f11dmdi-test1-name1 f09cmdi-test2-name2 "; – Nick

+0

私の答えが更新されました: –

0

これはかなり単純正規表現パターン

<?php 

$str = "f05cmdi-test1-name1 
f05cmdi-test2-name2"; 

$str = preg_replace("~[a-z0-9]{1,4}mdi-test([0-9]+-[a-z0-9]+)~", "'mdi-test\\1',", $str); 
echo $str; 

アルターでなんとかです

+0

ありがとう、これは素晴らしいですが、私は' f09cmdi'または 'f11dmdi'です。たとえば、$ str = "f11dmdi-test1-name1"となります。 f09cmdi-test2-name2 "; – Nick

+0

あなたのケースに合わせて正規表現を更新しました –

+0

ありがとう、ありがとう。 'test'の名前も変わったときに彼を使うことも可能ですか?たとえば、リストに '$ str =" f05cmdi-abc-def f05cmdi-ghi-klm "; – Nick

関連する問題