Улучшение preg_match - PullRequest
       8

Улучшение preg_match

0 голосов
/ 17 августа 2011

У меня есть следующие строки

Football-Europ,
Football-North
Ice_hockey-NHL
Tennis-xxx

Так что я использую preg_match для вида спорта и делаю еще один шаг ...

$sports  = "(football|ice_hockey|basketball|tennis|handball|soccer)"
preg_match($rSports,strtolower($link[1]), $sportType);

Но мне не нужны эти строки, включающие слова Live и American, как мне изменить preg_match?

Football-Amreican,
Football-Live,
Tennis-Live,

Ответы [ 4 ]

1 голос
/ 17 августа 2011

Используйте

"(football|ice_hockey|basketball|tennis|handball|soccer)(?!-(?:Live|American))"

Он использует отрицательный взгляд, чтобы убедиться, что за строками не следуют эти слова. Кроме того, он не будет содержать тире (-) в результате.

0 голосов
/ 17 августа 2011

Я думаю, вы можете искать preg_match_all и переключатель "no case" (i):

<?php

$rSports =<<<EOF
Football-Europ,
Football-North,
Ice_hockey-NHL,
Tennis-xxx
EOF;

$rSports = trim ($rSports);

# uncomment to use $sports  = "#((football|ice_hockey|basketball|tennis|handball|soccer).*)#i"; // gets you "Football-Europ" etc 
$sports  = "#(football|ice_hockey|basketball|tennis|handball|soccer)#i"; // gets you "Football"
preg_match_all($sports, $rSports, $sportType);

print_r( $sportType); 
0 голосов
/ 17 августа 2011
(^[A-Za-z_]{0,})-

это ваш шаблон

0 голосов
/ 17 августа 2011

Несоответствие определенному слову сложно в регулярном выражении.что вам нужно сделать, это отфильтровать результаты потом.

...