2016-11-02 10 views
9
$str = "helloworld"; 

私はあなたが私は位置の文字を置き換えたい見ることができるように、文字列文字列の偶数の位置にあるすべての文字を置換する最も簡単な方法。

$newStr = "h l o o l "; 

を作成したい、2,4,6,8,10 (最初の文字は位置1であると仮定した場合) 。

私はこの

<?php 

$str = 'helloworld'; 
$newStr = ''; 
for($i=0;$i<strlen($str);$i++) { 
    if($i%2==0) { 
     $newStr .= $str[$i]; 
    } else { 
      $newStr .= ' '; 
    } 
} 

echo $newStr; 

?> 

ような何かを行うことができますしかし、もっと簡単な方法か、このタスクを実行するために利用建て関数内の1行があります。

ありがとうございます。

答えて

8

これは、簡単に正規表現で行われます。

echo preg_replace('/(.)./', '$1 ', $str); 

ドットが文字に一致します。すべての2文字目がスペースで置き換えられます。

+0

これは空白と一致します。 – krasipenkov

+2

@krasipenkov、はい、OPには空白に関する記述はありません。だから、解決策はまだ質問 –

+2

に記載されている条件を満たしています。 – Beginner

2

これを試してみてください。ちょっと短いですが、あなたが尋ねたように1ライナーです。

$str = 'helloworld'; 
$newStr = ''; 
for($i = 0; $i < strlen($str); $i++) { $newStr .= (($i % 2) == 0 ? $str[ $i ] : ' '); } 
echo $newStr; 
+1

「1つのライナー」と呼ばれるストレッチがあります。 – aaaidan

+0

@aaaidan建設的なコメントをありがとう、ちょうど私が今朝探していたもの。その他の知恵の真珠? – Blinkydamo

+1

おっと、申し訳ありません。感情を傷つけるつもりはありませんでした。いい一日になるといいですね。 :) – aaaidan

1

似ていますが、使用して発電機あなたは、それは奇妙だかどうかをチェックする必要はありませんので、

$str = 'helloworld'; 
$newstr =''; 
foreach(range($str, strlen($str)-1, 2) as $i){ 
$newstr.=$str[$i].' '; 
} 
3

は、まずあなたが、2であなたのカウンターを増やすことができます。 文字列がchar配列のように扱われるため、位置$ iの文字に$str[$i]でアクセスできます。

$str = "Hello World"; 
$newStr = $str; 
for($i = 1; $i < strlen($str); $i += 2) { 
    $newStr[$i] = ' '; 
} 
echo $newStr; 

いい日がありますか?

[編集]ヒントのためにringoさんに感謝します。

+0

* $ str *のコピーを作成してください。 –

関連する問題