2017-02-10 17 views
1

nba.comサイトhereを使用して毎日のNBAスケジュールを作成しましたが、レイアウトが変更されました。しかし、私はこれにそれを回す困難持っていますPHP - 文字列の書式設定

5:00 PM ET 
LA Clippers 
Charlotte Hornets 

:この中

5:00 PM ET 
LA Clippers 
Charlotte Hornets 
Spectrum Center 
Charlotte, NC 
GAME PREVIEWBUY TICKETS 

:PHPを使用して、私は

これを回すことができた

5:00 PM ET LA Clippers @ Charlotte Hornets 

をI javascript/jqueryのような他の言語でさえ、私がPHPでなくてもuserscriptに実装することができます。

提案がありますか?

コード私は現在、私が望まない単語をきれいにするために使用しています。

<?php 
$name = $_POST["teamname"]; 
$words = array("Spectrum Center","Charlotte, NC","Bankers Life Fieldhouse","Indianapolis, IN","Wells Fargo Center","Philadelphia, PA","Quicken Loans Arena","Cleveland, OH","bc","Chesapeake Energy Arena","Oklahoma City, OK","Toyota Center","Houston, TX","American Airlines Center","Dallas, TX","GAME PREVIEWBUY TICKETS","Vivint Smart Home Arena"," 
Salt Lake City, UT"); 
$name = str_replace($words,"",$name); 

if(isset($_POST["teamname"])){ 
    echo 'output:<br /><br /><textarea name="teamname" cols="80" rows="20" onclick="this.focus();this.select()">'.$name.'</textarea>'; 
    } 
?> 

編集:added my code。

+1

貼り付け。 – wogsland

+1

最後の改行を@に変更します。これにあなたの現在のコードを参照する必要があります – nogad

+0

私は使用しているPHPコードを追加しました。 – Slightz

答えて

1

javascriptで、あなたはその後、アレイに1台または複数の要素を追加した文字列を返すために、アレイ上.join("")を呼び出すためにArray.prototype.splice()を使用し、その後、文字列に.split("\n")を呼び出すことができます。

let data = `5:00 PM ET 
 
LA Clippers 
 
Charlotte Hornets 
 
Spectrum Center 
 
Charlotte, NC 
 
GAME PREVIEWBUY TICKETS`; 
 

 
let arr = data.split("\n").slice(0, 3); 
 
arr.splice(-1, 0, " @ "); 
 
arr.splice(1, 0, " "); 
 

 
console.log(arr.join(""));

jsfiddleで、文字列、行26で省略"bc"で、あなたは次の日付の行の前に3行をスキップする6で変数をインクリメント、do..whileループを使用することができます与えられました。

let data = `5:00 PM ET 
 
LA Clippers 
 
Charlotte Hornets 
 
Spectrum Center 
 
Charlotte, NC 
 
GAME PREVIEWBUY TICKETS 
 
7:00 PM ET 
 
Milwaukee Bucks 
 
Indiana Pacers 
 
Bankers Life Fieldhouse 
 
Indianapolis, IN 
 
GAME PREVIEWBUY TICKETS 
 
7:30 PM ET 
 
Miami Heat 
 
Philadelphia 76ers 
 
Wells Fargo Center 
 
Philadelphia, PA 
 
GAME PREVIEWBUY TICKETS 
 
7:30 PM ET 
 
Denver Nuggets 
 
Cleveland Cavaliers 
 
Quicken Loans Arena 
 
Cleveland, OH 
 
GAME PREVIEWBUY TICKETS 
 
8:30 PM ET 
 
Golden State Warriors 
 
Oklahoma City Thunder 
 
Chesapeake Energy Arena 
 
Oklahoma City, OK 
 
GAME PREVIEWBUY TICKETS 
 
9:00 PM ET 
 
Phoenix Suns 
 
Houston Rockets 
 
Toyota Center 
 
Houston, TX 
 
GAME PREVIEWBUY TICKETS 
 
9:00 PM ET 
 
Orlando Magic 
 
Dallas Mavericks 
 
American Airlines Center 
 
Dallas, TX 
 
GAME PREVIEWBUY TICKETS 
 
10:00 PM ET 
 
Boston Celtics 
 
Utah Jazz 
 
Vivint Smart Home Arena 
 
Salt Lake City, UT`; 
 

 
let [arr, n, next, res] = [data.split("\n"), 0, 6, Array()]; 
 

 
do { 
 
    let curr = arr.slice(n, n + 3); 
 
    curr.splice(-1, 0, " @ "); 
 
    curr.splice(1, 0, " "); 
 
    res.push(curr.join("")); 
 
    n += next; 
 
} while (n + next < arr.length); 
 

 
console.log(res); 
 

 
var text = ""; 
 
var i; 
 
for (i = 0; i < res.length; i++) { 
 
    text += res[i] + "<br>"; 
 
} 
 
document.getElementById("demo").innerHTML = text;
<div id="demo"></div>
すでに持っているので、SOユーザーは、あなたがそれを変更することができますコードで

+0

私はこの例を試しましたが、複数のチームを追加すると最初のものしか読み込まれませんが、forループを追加する必要がありますか? – Slightz

+0

はい。 'Promise.all()'、 'fetch()'、 'XMLHttpRequest()'を使ってN個のチームをリクエストしてから、レスポンス配列を反復して各レスポンスに対して同じアクションを実行することができます。 – guest271314

+0

私はforループを試しましたが、もし私がarr.splice(-1、0、 "@")をコメントアウトしていれば、ループから配列を取得することができました。 arr.splice(1,0、 "");そうでなければ、私は最初のエントリを取得しました – Slightz

関連する問題