2011-10-25 15 views
1

私と同じプログラミングコースを取っているいくつかの友達はこれまで数時間これを混乱させていました。ここの誰かが助けてくれることを願っています。 掲示板に適した、URLのリストを取得し、改行で分割し、[img]と[/ img]を各URLに追加します。実際のコードには、[img]と[thumb] bbcodesの両方を許可するスイッチが含まれていますが、どちらも同じ効果があります。 代わりPHPループエラー - ループの一部だけがループしていますか?

[ img]1[/ img] 
[ img]2[/ img] 

を出力することは、同じURLの任意の数の起こり

[ img]1 
2[ /img] 

を出力します。ここに私が使用しているコードがあります。

<?php 

    $url_f = (isset($_POST['text'])) ? $_POST['text'] : false; 
    $thumb = (isset($_POST['type'])) ? $_POST['type'] : false; 
    $urls = ($url_f) ? explode('\n',$url_f) : ''; 

    ?> 

    <textarea rows='20' cols='40' readonly='1'> 


    <?php 
    switch ($thumb){ 
     case 'img': 
      for ($i = count($urls)-1; $i >= 0; $i--) 
      { 
       echo "[img]". $urls[$i] ."[/img]\n"; 
      } 
      break; 

     default: 
      break; 

     case 'thumb': 
      for ($i = count($urls)-1; $i >= 0; $i--) 
      { 
       echo '[thumb]'. $urls[$i] ."[/thumb]\n"; 
      } 
      break; 

    } 

    ?> 

    </textarea> 
+4

最後にあなたが知っているのは 'default'です。そうでなければ、それを超えて何もスキップしません。 –

+0

この場合は表示されませんが、チップに感謝します。 – SatansFate

+0

そのスイッチは本当にファンキーです。また、スイッチ{}の最後の行以外は、個人的にデフォルトを見たことがありません。 $ URLは実際に予想どおりに埋め込まれていますか? – Tim

答えて

1

改行の3つのタイプがあります:\ R、\ nと\ r \ nの。私は多くのWeb開発をしませんが、異なるOSはおそらく異なる改行を送るでしょうから、分割する文字を見つけるためにいくつかのチェックをしなければなりません。

\ nが機能していないため、改行はおそらく\ r \ nまたは\ rです。

編集:一重引用符で囲まれた文字列リテラルが問題の可能性があります。

+0

意味があります。どうやってチェックするの?私はそれを爆発させてから、長さを確認できますか? – SatansFate

+1

私はしばらくの間、PHPに触れていないので何かを見逃しました。エスケープシーケンスが機能するには、使用した一重引用符を二重引用符で置き換える必要があります。それを試してください。まだ問題が残っている場合は、コードを投稿します。 – Timiz0r

+0

Aaaaah! Jeezは、なぜ私がPHPをそんなに嫌うのかを思い出させます。一重引用符と二重引用符の違いを熟考しながら時間を費やしています...それはそれを修正しました。助けてくれた皆さん、ありがとう。 – SatansFate

1

問題は'\n' !== "\n"です。前者は "バックスラッシュn"として扱われ、後者は改行文字(ASCII 0xA、LFのまま)に処理されます。詳細はDouble Quoted Stringsを参照してください。

ループについては、foreachを調べるとよいでしょう。

関連する問題