【发布时间】:2018-06-20 17:37:07
【问题描述】:
***更新:谢谢大家的所有回答!感谢您的回复,我找到了解决问题的另一种方法!
$find = array('ACH', 'AER', 'AERG', 'AGL', 'AIRE', 'ALL', 'ANGL', 'ARC', 'ART', 'AUT', 'AV', 'BASE', 'BD', 'BER', 'BORD', 'BRE', 'BRG', 'BRTL', 'BSN', 'CAE','CALL', 'CAMI', 'CAMP', 'CAN', 'CAR', 'CARE', 'CASR', 'CC', 'CD', 'CF', 'CHA', 'CHE', 'CHEM', 'CHL', 'CHP', 'CHS', 'CHT', 'CHV', 'CITE', 'CIVE','CLOS', 'CLR', 'COIN', 'COL', 'COR', 'CORO', 'COTE', 'COUR', 'CPG', 'CR', 'CRS', 'CRX','CTR', 'CTRE', 'DARS', 'DEVI', 'DIG', 'DOM', 'DRA', 'DSC', 'ECA', 'ECL', 'EMBR', 'EMP', 'ENC', 'ENV', 'ESC', 'ESP', 'ESPA', 'ETNG', 'FD', 'FG','FON', 'FOR', 'FORT', 'FOS', 'FRM', 'GAL', 'GARE', 'GBD', 'GPL', 'GR', 'GREV', 'HAB', 'HAM', 'HIP', 'HLE', 'HLG', 'HLM', 'HTR', 'ILE', 'ILOT', 'IMP', 'JARD', 'JTE', 'LAC', 'LEVE','LICE', 'LIGN', 'LOT', 'MAIL', 'MAIS', 'MAR', 'MARE', 'MAS', 'MNE', 'MRN', 'MTE', 'NTE', 'PAE', 'PARC', 'PAS', 'PASS', 'PCH', 'PCHE', 'PHAR', 'PIST','PKG', 'PL', 'PLA', 'PLAG', 'PLAN', 'PLCI', 'PLE', 'PLN', 'PLT', 'PNT', 'PONT', 'PORQ', 'PORT', 'POST', 'POT', 'PROM', 'PRT', 'PRV', 'PTA', 'PTE', 'PTR', 'PTTE', 'QUA', 'QUAI', 'RAC', 'REM', 'RES','RIVE', 'RLE', 'ROC', 'RPE', 'RPT', 'RTD', 'RTE', 'RUE', 'RUET', 'RUIS', 'RULT', 'RVE', 'SAS', 'SEN', 'SQ', 'STDE', 'TER', 'TOUR', 'TPL', 'TRA','TRAB', 'TRN', 'TRT', 'TSSE', 'TUN', 'VAL', 'VALL', 'VC', 'VCHE', 'VEN', 'VGE', 'VIA','VIAD', 'VIL', 'VLA', 'VOIE', 'VOIR', 'VOUT', 'VOY', 'VTE', 'ZA', 'ZAC', 'ZAD', 'ZI', 'ZONE', 'ZUP');
$replace = array('ANCIEN CHEMIN', 'AERODROME', 'AEROGARE', 'AGGLOMERATION', 'AIRE', 'ALLEE', 'ANGLE', 'ARCADE', 'ANCIENNE ROUTE', 'AUTOROUTE', 'AVENUE', 'BASE', 'BOULEVARD', 'BERGE', 'BORD', 'BARRIERE', 'BOURG', 'BRETELLE', 'BASSIN', 'CARRIERA', 'CALLE, CALLADA', 'CAMIN', 'CAMP', 'CANAL', 'CARREFOUR', 'CARRIERE', 'CASERNE', 'CHEMIN COMMUNAL', 'CHEMIN DEPARTEMENTAL', 'CHEMIN FORESTIER', 'CHASSE', 'CHEMIN', 'CHEMINEMENT', 'CHALET', 'CHAMP', 'CHAUSSEE', 'CHATEAU', 'CHEMIN VICINAL', 'CITE', 'COURSIVE','CLOS', 'COULOIR', 'COIN', 'COL', 'CORNICHE', 'CORON', 'COTE', 'COUR', 'CAMPING', 'CHEMIN RURAL', 'COURS', 'CROIX','CONTOUR', 'CENTRE', 'DARSE, DARCE', 'DEVIATION', 'DIGUE', 'DOMAINE', 'DRAILLE', 'DESCENTE', 'ECART', 'ECLUSE', 'EMBRANCHEMENT', 'EMPLACEMENT', 'ENCLOS', 'ENCLAVE', 'ESCALIER', 'ESPLANADE', 'ESPACE', 'ETANG', 'FOND', 'FAUBOURG','FONTAINE', 'FORET', 'FORT', 'FOSSE', 'FERME', 'GALERIE', 'GARE', 'GRAND BOULEVARD', 'GRANDE PLACE', 'GRANDE RUE', 'GREVE', 'HABITATION', 'HAMEAU', 'HIPPODROME', 'HALLE', 'HALAGE', 'HLM', 'HAUTEUR', 'ILE', 'ILOT', 'IMPASSE', 'JARDIN', 'JETEE', 'LAC', 'LEVEE', 'LICES','LIGNE', 'LOTISSEMENT', 'MAIL', 'MAISON', 'MARCHE', 'MARE', 'MAS', 'MORNE', 'MARINA', 'MONTEE', 'NOUVELLE ROUTE', 'PETITE AVENUE', 'PARC', 'PASSAGE', 'PASSE', 'PETIT CHEMIN', 'PORCHE', 'PHARE', 'PISTE', 'PARKING','PLACE', 'PLACA', 'PLAGE', 'PLAN', 'PLACIS', 'PASSERELLE', 'PLAINE', 'PLATEAU', 'POINTE', 'PONT', 'PORTIQUE', 'PORT', 'POSTE', 'POTERNE', 'PROMENADE', 'PETITE ROUTE', 'PARVIS', 'PETITE ALLEE', 'PORTE', 'PETITE RUE', 'PLACETTE', 'QUARTIER', 'QUAI', 'RACCOURCI', 'REMPART', 'RESIDENCE','RIVE', 'RUELLE', 'ROCADE', 'RAMPE', 'ROND-POINT', 'ROTONDE', 'ROUTE', 'RUE', 'RUETTE', 'RUISSEAU', 'RUELLETTE', 'RAVINE', 'SAS', 'SENTIER, SENTE', 'SQUARE', 'STADE', 'TERRE', 'TOUR', 'TERRE-PLEIN', 'TRAVERSE','TRABOULE', 'TERRAIN', 'TERTRE', 'TERRASSE', 'TUNNEL', 'VAL', 'VALLON, VALLEE', 'VOIE COMMUNALE', 'VIEUX CHEMIN', 'VENELLE', 'VILLAGE', 'VIA','VIADUC', 'VILLE', 'VILLA', 'VOIE', 'VOIRIE', 'VOUTE', 'VOYEUL', 'VIEILLE ROUTE', 'ZA', 'ZAC', 'ZAD', 'ZI', 'ZONE', 'ZUP');
$arr = array_combine($find, $replace);
foreach ($resultat as $enreg) { // extrait chaque ligne une à une
echo $arr[$enreg['nature']];
}
祝大家有个愉快的一天;)
在我的代码中,我需要用实际术语替换 Abbreviations。
我目前使用带有数组的 str_replace 来查找要随实词更改的缩写,这是我的代码:
foreach ($resultat as $enreg) {
$enreg['nature'] = str_replace(
array('ACH', 'AER', 'AERG', 'AGL', 'AIRE', 'ALL', 'ANGL', 'ARC', 'ART', 'AUT', 'AV', 'BASE', 'BD', 'BER', 'BORD', 'BRE', 'BRG', 'BRTL', 'BSN', 'CAE','CALL', 'CAMI', 'CAMP', 'CAN', 'CAR', 'CARE', 'CASR', 'CC', 'CD', 'CF', 'CHA', 'CHE', 'CHEM', 'CHL', 'CHP', 'CHS', 'CHT', 'CHV', 'CITE', 'CIVE','CLOS', 'CLR', 'COIN', 'COL', 'COR', 'CORO', 'COTE', 'COUR', 'CPG', 'CR', 'CRS', 'CRX','CTR', 'CTRE', 'DARS', 'DEVI', 'DIG', 'DOM', 'DRA', 'DSC', 'ECA', 'ECL', 'EMBR', 'EMP', 'ENC', 'ENV', 'ESC', 'ESP', 'ESPA', 'ETNG', 'FD', 'FG','FON', 'FOR', 'FORT', 'FOS', 'FRM', 'GAL', 'GARE', 'GBD', 'GPL', 'GR', 'GREV', 'HAB', 'HAM', 'HIP', 'HLE', 'HLG', 'HLM', 'HTR', 'ILE', 'ILOT', 'IMP', 'JARD', 'JTE', 'LAC', 'LEVE','LICE', 'LIGN', 'LOT', 'MAIL', 'MAIS', 'MAR', 'MARE', 'MAS', 'MNE', 'MRN', 'MTE', 'NTE', 'PAE', 'PARC', 'PAS', 'PASS', 'PCH', 'PCHE', 'PHAR', 'PIST','PKG', 'PL', 'PLA', 'PLAG', 'PLAN', 'PLCI', 'PLE', 'PLN', 'PLT', 'PNT', 'PONT', 'PORQ', 'PORT', 'POST', 'POT', 'PROM', 'PRT', 'PRV', 'PTA', 'PTE', 'PTR', 'PTTE', 'QUA', 'QUAI', 'RAC', 'REM', 'RES','RIVE', 'RLE', 'ROC', 'RPE', 'RPT', 'RTD', 'RTE', 'RUE', 'RUET', 'RUIS', 'RULT', 'RVE', 'SAS', 'SEN', 'SQ', 'STDE', 'TER', 'TOUR', 'TPL', 'TRA','TRAB', 'TRN', 'TRT', 'TSSE', 'TUN', 'VAL', 'VALL', 'VC', 'VCHE', 'VEN', 'VGE', 'VIA','VIAD', 'VIL', 'VLA', 'VOIE', 'VOIR', 'VOUT', 'VOY', 'VTE', 'ZA', 'ZAC', 'ZAD', 'ZI', 'ZONE', 'ZUP'),
array('ANCIEN CHEMIN', 'AERODROME', 'AEROGARE', 'AGGLOMERATION', 'AIRE', 'ALLEE', 'ANGLE', 'ARCADE', 'ANCIENNE ROUTE', 'AUTOROUTE', 'AVENUE', 'BASE', 'BOULEVARD', 'BERGE', 'BORD', 'BARRIERE', 'BOURG', 'BRETELLE', 'BASSIN', 'CARRIERA', 'CALLE, CALLADA', 'CAMIN', 'CAMP', 'CANAL', 'CARREFOUR', 'CARRIERE', 'CASERNE', 'CHEMIN COMMUNAL', 'CHEMIN DEPARTEMENTAL', 'CHEMIN FORESTIER', 'CHASSE', 'CHEMIN', 'CHEMINEMENT', 'CHALET', 'CHAMP', 'CHAUSSEE', 'CHATEAU', 'CHEMIN VICINAL', 'CITE', 'COURSIVE','CLOS', 'COULOIR', 'COIN', 'COL', 'CORNICHE', 'CORON', 'COTE', 'COUR', 'CAMPING', 'CHEMIN RURAL', 'COURS', 'CROIX','CONTOUR', 'CENTRE', 'DARSE, DARCE', 'DEVIATION', 'DIGUE', 'DOMAINE', 'DRAILLE', 'DESCENTE', 'ECART', 'ECLUSE', 'EMBRANCHEMENT', 'EMPLACEMENT', 'ENCLOS', 'ENCLAVE', 'ESCALIER', 'ESPLANADE', 'ESPACE', 'ETANG', 'FOND', 'FAUBOURG','FONTAINE', 'FORET', 'FORT', 'FOSSE', 'FERME', 'GALERIE', 'GARE', 'GRAND BOULEVARD', 'GRANDE PLACE', 'GRANDE RUE', 'GREVE', 'HABITATION', 'HAMEAU', 'HIPPODROME', 'HALLE', 'HALAGE', 'HLM', 'HAUTEUR', 'ILE', 'ILOT', 'IMPASSE', 'JARDIN', 'JETEE', 'LAC', 'LEVEE', 'LICES','LIGNE', 'LOTISSEMENT', 'MAIL', 'MAISON', 'MARCHE', 'MARE', 'MAS', 'MORNE', 'MARINA', 'MONTEE', 'NOUVELLE ROUTE', 'PETITE AVENUE', 'PARC', 'PASSAGE', 'PASSE', 'PETIT CHEMIN', 'PORCHE', 'PHARE', 'PISTE', 'PARKING','PLACE', 'PLACA', 'PLAGE', 'PLAN', 'PLACIS', 'PASSERELLE', 'PLAINE', 'PLATEAU', 'POINTE', 'PONT', 'PORTIQUE', 'PORT', 'POSTE', 'POTERNE', 'PROMENADE', 'PETITE ROUTE', 'PARVIS', 'PETITE ALLEE', 'PORTE', 'PETITE RUE', 'PLACETTE', 'QUARTIER', 'QUAI', 'RACCOURCI', 'REMPART', 'RESIDENCE','RIVE', 'RUELLE', 'ROCADE', 'RAMPE', 'ROND-POINT', 'ROTONDE', 'ROUTE', 'RUE', 'RUETTE', 'RUISSEAU', 'RUELLETTE', 'RAVINE', 'SAS', 'SENTIER, SENTE', 'SQUARE', 'STADE', 'TERRE', 'TOUR', 'TERRE-PLEIN', 'TRAVERSE','TRABOULE', 'TERRAIN', 'TERTRE', 'TERRASSE', 'TUNNEL', 'VAL', 'VALLON, VALLEE', 'VOIE COMMUNALE', 'VIEUX CHEMIN', 'VENELLE', 'VILLAGE', 'VIA','VIADUC', 'VILLE', 'VILLA', 'VOIE', 'VOIRIE', 'VOUTE', 'VOYEUL', 'VIEILLE ROUTE', 'ZA', 'ZAC', 'ZAD', 'ZI', 'ZONE', 'ZUP'),
$enreg['nature']
);
echo $enreg['nature']; };
这里的问题是 str_replace 对缩写“PL”不够严格,因为它将被替换为“PLACE”和“PLACA”,因为“PL”也在“PLA”缩写中......
我怎样才能创建一个 str_replace,它只会用更严格的研究替换缩写(例如,用“PL”代替“PLACE”而不是“PLACACE”,因为“PL”也在“PLA”缩写中)?
【问题讨论】:
-
您可以使用存储缩写及其所指内容的表格
-
您的整个网站都是大写字母吗?
-
看看
preg_replacephp.net/manual/en/function.preg-replace.php 这可以接受模式和替换的数组 -
@Mecadie 裁员比我最初想象的要多。自己看:sandbox.onlinephpfunctions.com/code/…
-
@RMcLeod OP 知道
preg_replace()函数,它在问题的标签集中。请删除您的评论。
标签: php preg-replace str-replace