簡體   English   中英

PHP僅使用正則表達式匹配數組中的單詞

[英]PHP only match the words in array using regex

我正在使用str_replace來“清理”我不想要的單詞,這樣我可以為團隊創建時間表。 但是,每次有更多的單詞需要消除時,我最終每天都要編輯該文件。 我想使用正則表達式,但我無法僅獲得團隊名稱。 因此,我想將團隊添加到數組中,僅獲取團隊名稱,從而清除垃圾單詞。

所以會是這樣的:

Boston Celtics vs. Brooklyn Nets

那就是我可以將其格式化為包含“ vs”。 兩隊之間。 否則,它將只是

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;
    }
?>

有沒有更好的方法來獲取我想要的結果。

編輯:

我在答案中使用代碼將日程表的字符串制成數組。 但是,我正在與另一個答案(忘了鏈接)得到的正則表達式循環進行交互,而它們都分別工作。 我首先需要將其分解為一個數組,然后將該數組放入另一個循環中以傳遞正則表達式。 如何使用兩個循環?

這是我到目前為止所擁有的。

<?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 />";
}
?>

我做了我想要的。

<?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 />";
   }
}
?>

演示 http://rextester.com/THKE48416

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM