2017-04-10 9 views
0

私は望んでいない単語を「クリーン」するためにstr_replaceを使用しています。この方法でチームのスケジュールを作成できます。しかし、削除する必要がある単語が増えるたびに、毎日ファイルを編集することになります。私はregexを使いたかったのですが、私はチーム名だけを得ることができませんでした。だから私はチームをアレイに追加して、チーム名だけを入手して迷惑な言葉を掃除したい。私はそれをフォーマットすることができれば、「対」を含めることですPHPは正規表現を使用して配列内の単語にのみ一致します

Boston Celtics vs. Brooklyn Nets 

ので、それはようなものになるだろう両チーム間でそれ以外の場合は、それはちょうど

Boston Celtics Brooklyn Nets 

ここに私は単語を削除するために使用しているコードです。

<?php 
$name1 = 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","United Center","Chicago, IL","Target Center","Target Center","Staples Center","Los Angeles, CA","Minneapolis, MN","Amway Center","Orlando, FL","TD Garden","Boston, MA","Palace of Auburn Hills","Detroit, MI","Pepsi Center","Denver, CO","Vivint Smart Home Arena","Salt Lake City, UT","Talking Stick Resort Arena","Phoenix, AZ","Air Canada Centre","Toronto, ON","Barclays Center","Brooklyn, NY","FedExForum","Memphis, TN","ORACLE Arena", "Oakland, CA","Golden 1 Center","Sacramento, CA","Smoothie King Center","New Orleans, LA","BMO Harris Bradley Center","Milwaukee, WI","Philips Arena","Atlanta, GA","Madison Square Garden","New York, NY","AmericanAirlines Arena","Miami, FL","AT&T Center","San Antonio, TX","Verizon Center","Washington, DC","FOX SPORTS SOUTHEAST - CHARLOTTE","FS FLORIDA","WFNZ 610 AM","ESPN 580/SALSA 98.1 FM (ESP)","WGN-TV","ROOT","WLS-AM 890/WRTO 1200 (ESP)","790 AM","FSI","1070 THE FAN NORTH","CSN BAY AREA","830 WCCO","95.7 GAME SOUTHEAST","TSN2",'92.9 "THE GAME"',"TSN RADIO 1050 TORONTO ALTITUDE","CSNHD","KKSE 950AM","98.5 HUB FSSW","YES","103.3 ESPN","WFAN CSN-CA","CSN","KHTK 1140 1500 ","FOX SPORTS WISCONSIN","FSI","AM 620 WTMJ","1070 THE FAN","FS NORTH","CSN BAY AREA","830 WCCO","95.7 THE GAME","FOX SPORTS SOUTHEAST","TSN2","92.9 FM",'"THE GAME"',"TSN RADIO 1050 TORONTO","ALTITUDE","CSNHD","KKSE 950AM","98.5 THE SPORTS HUB","FSSW"," YES","103.3 ESPN","WFAN","-CA","CSN","TSN2","KHTK SPORTS 1140 AM","1500 AM","NBATV CANADA","FS OKLAHOMA HD","WWLS 98.1FM OKC/930AM (ESP)","KZNS","PRIME TICKET","TCN-PHI","AM 570 LA SPORTS","97.5 THE FANATIC","FS DETROIT","MSG","105.1 WMGC-FM","ESPN NY 98.7","FSNOLA","WRNO 99.5FM","FSOHIO","WTAM 1100/100.7 WMMS/87.7 FM (ESP)","FS-SUN","SPORTSNET ONE","SPORTSNET ONE","790 THE TICKET/S: WAQI 710 AM","SPORTSNET 590 THE FAN","WOAI 1200AM","WMFS","FSAZ","ARIZONA SPORTS 98.7FM/KSUN 1400AM (ES)","NWHD","RIP CITY RADIO 620","OR","SPE/SPECD","710 AM ESPN/1330 AM ESPN DEPTES","WLS 890AM","KGWHD","-CHICAGO","CW35 HD","TSNN","TSN1/4","790 THE TICKET","/ S:","WRTO MIX 98.3 FM","TSN4/5","740 AM","100.7 WMMS/87.7 FM (ESP)"); 

$name = $_POST["teamname"]; 
$name = str_replace($name1,"",$name); 
$name = str_replace(",","",$name); 
$name = str_replace("\n\n", '<br />', $name); 
$name = str_replace("\r\n\r\n", '<br />', $name); 

if(isset($_POST["teamname"])){ 
    echo $name; 
    } 
?> 

私が探している結果を得るには、より良い方法があります。

編集:

私は配列にスケジュールの文字列を作るためにthisの回答内のコードを使用しています。私は別の答え(リンクを忘れてしまった)から得た正規表現ループとのやりとりをしていますが、どちらも別々に動作しています。私はまず配列にそれを爆発させ、別のループで正規表現を渡すためにその配列iseする必要があります。両方のループをどのように使用できますか?

これは私がこれまで持っていたものです。

<?php 
$search = array("Boston Celtics","Brooklyn Nets","New York Knicks","Philadelphia 76ers","Toronto Raptors","Golden State Warriors","LA Clippers","Los Angeles Lakers","Phoenix Suns","Sacramento Kings","Chicago Bulls","Cleveland Cavaliers","Detroit Pistons","Indiana Pacers","Milwaukee Bucks","Dallas Mavericks","Houston Rockets","Memphis Grizzlies","New Orleans Pelicans","San Antonio Spurs","Atlanta Hawks","Charlotte Hornets","Miami Heat","Orlando Magic","Washington Wizards","Denver Nuggets","Minnesota Timberwolves","Oklahoma City Thunder","Portland Trail Blazers","Utah Jazz","7:30 PM","7:00 PM"); 

$results= array(
"7:00 PM ET 
CSN, FSI, 97.5 THE FANATIC, 1070 THE FAN 
Indiana Pacers 
Philadelphia 76ers", 
     "7:30 PM ET 
CSNHD, YES, 98.5 THE SPORTS HUB, WFAN 
Brooklyn Nets 
Boston Celtics", 
     "7:30 PM ET 
FS-SUN, FSOHIO, SN, 790 THE TICKET/S: WRTO MIX 98.3 FM, WTAM 1100/100.7 WMMS/87.7 FM (ESP) 
Cleveland Cavaliers 
Miami Heat", 
     "Excepteur sint occaecat cupidatat non proident" 
    ); 
foreach ($results as $result) { 
    $pattern = "/\b(" . implode('|', $search) . ")\b/i"; 
    $found = preg_match_all($pattern, $result, $matches); 
    $time = $matches[0][0]; 
    $team1 = $matches[0][1]; 
    $team2 = $matches[0][2]; 

    if ($found) { 
     echo $time."&nbsp;&nbsp;&nbsp;".$team1." vs ".$team2."<br />"; 
    } 
} 

$t = "7:00 PM ET 
CSN, FSI, 97.5 THE FANATIC, 1070 THE FAN 
Indiana Pacers 
Philadelphia 76ers 
Wells Fargo Center 
Philadelphia, PA 
GAME PREVIEWBUY TICKETS 
7:30 PM ET 
CSNHD, YES, 98.5 THE SPORTS HUB, WFAN 
Brooklyn Nets 
Boston Celtics 
TD Garden 
Boston, MA 
GAME PREVIEWBUY TICKETS 
7:30 PM ET 
FS-SUN, FSOHIO, SN, 790 THE TICKET/S: WRTO MIX 98.3 FM, WTAM 1100/100.7 WMMS/87.7 FM (ESP) 
Cleveland Cavaliers 
Miami Heat 
AmericanAirlines Arena 
Miami, FL"; 
$pieces = explode("TICKETS", $t); 

$teans = ''; 

foreach($pieces as $cat) { 
    $cat = trim($cat); 
    $teans .= "<category>" . $cat . "</category>\n"; 
    echo $cat."<br />"; 
} 
?> 
+1

あなたが望むものを定義し、preg_match_all' 'でそれをつかむ方法について。 – AbraCadaver

+0

**実際の**入力の例を表示できます(コードで書いたテストケースではありません)。入力に実際に改行がありますか?入力が予想通りに構造化されているため、正規表現を使用しなくなる可能性があります。 –

+0

@MikeBrantこれはuがNBAサイト 午後7:00 ET CSN、FSI、97.5 FANATIC、1070のTHE FAN インディアナペイサーズ フィラデルフィア・セブンティシクサーズ ウェルズファーゴセンター フィラデルフィアからコピーした後、それはうそ= KE見えるものとなり、 PA GAME PREVIEWBUY TICKETS 私は、両方のループが別々に動作するTICKETSの後に爆発するのですが、私はexplodeループが作成した配列を使って一致を探していなければなりません – Slightz

答えて

0

私は何を探していましたか?

<?php 
$search = array("Boston Celtics","Brooklyn Nets","New York Knicks","Philadelphia 76ers","Toronto Raptors","Golden State Warriors","LA Clippers","Los Angeles Lakers","Phoenix Suns","Sacramento Kings","Chicago Bulls","Cleveland Cavaliers","Detroit Pistons","Indiana Pacers","Milwaukee Bucks","Dallas Mavericks","Houston Rockets","Memphis Grizzlies","New Orleans Pelicans","San Antonio Spurs","Atlanta Hawks","Charlotte Hornets","Miami Heat","Orlando Magic","Washington Wizards","Denver Nuggets","Minnesota Timberwolves","Oklahoma City Thunder","Portland Trail Blazers","Utah Jazz","7:00 PM ","7:30 PM ","7:30 PM ","8:00 PM ","8:00 PM ","8:00 PM ","10:00 PM ","10:30 PM ","10:30 PM "); 

$t = "7:00 PM ET 
CSN, FSI, 97.5 THE FANATIC, 1070 THE FAN 
Indiana Pacers 
Philadelphia 76ers 
Wells Fargo Center 
Philadelphia, PA 
GAME PREVIEWBUY TICKETS 
7:30 PM ET 
CSNHD, YES, 98.5 THE SPORTS HUB, WFAN 
Brooklyn Nets 
Boston Celtics 
TD Garden 
Boston, MA 
GAME PREVIEWBUY TICKETS 
7:30 PM ET 
FS-SUN, FSOHIO, SN, 790 THE TICKET/S: WRTO MIX 98.3 FM, WTAM 1100/100.7 WMMS/87.7 FM (ESP) 
Cleveland Cavaliers 
Miami Heat 
AmericanAirlines Arena 
Miami, FL 
GAME PREVIEWBUY TICKETS 
8:00 PM ET 
CSN-CHICAGO, FS FLORIDA, WLS-AM 890/WRTO 1200 (ESP), ESPN 580/SALSA 98.1 FM (ESP) 
Orlando Magic 
Chicago Bulls 
United Center 
Chicago, IL 
GAME PREVIEWBUY TICKETS 
8:00 PM ET 
FOX SPORTS WISCONSIN, FOX SPORTS SOUTHEAST - CHARLOTTE, AM 620 WTMJ, WFNZ 610 AM 
Charlotte Hornets 
Milwaukee Bucks 
BMO Harris Bradley Center 
Milwaukee, WI 
GAME PREVIEWBUY TICKETS 
8:00 PM ET 
bc 
TSNN, 105.1 WMGC-FM, 1500 AM 
Washington Wizards 
Detroit Pistons 
Palace of Auburn Hills 
Detroit, MI 
GAME PREVIEWBUY TICKETS 
10:00 PM ET 
CSNNWHD, FSSW, RIP CITY RADIO 620, WOAI 1200AM 
San Antonio Spurs 
Portland Trail Blazers 
Moda Center 
Portland, OR 
GAME PREVIEWBUY TICKETS 
10:30 PM ET 
bc 
TSN1/4, AM 570 LA SPORTS, 790 AM 
Houston Rockets 
LA Clippers 
Staples Center 
Los Angeles, CA 
GAME PREVIEWBUY TICKETS 
10:30 PM ET 
NBCS - BA, ROOT, SN, 95.7 THE GAME, KZNS 
Utah Jazz 
Golden State Warriors 
ORACLE Arena 
Oakland, CA"; 

$pieces = explode("TICKETS", $t); 
foreach ($pieces as $result) { 
    $pattern = "/\b(" . implode('|', $search) . ")\b/i"; 
    $found = preg_match_all($pattern, $result, $matches); 
    $time = $matches[0][0]; 
    $team1 = $matches[0][1]; 
    $team2 = $matches[0][2]; 

    if ($found) { 
     echo $time."&nbsp;&nbsp;&nbsp;".$team1." vs ".$team2."<br />"; 
    } 
} 
?> 

DEMOhttp://rextester.com/THKE48416

関連する問題