шаблон регулярного выражения для сопоставления только строк, которые не содержат пробелов PHP - PullRequest
4 голосов
/ 03 июня 2010

Я хочу сопоставить слово / шаблон, содержащийся в переменной, но сопоставлять только слова, у которых нет пробелов. Пожалуйста, дайте предложения.

$ var = 'look';

$ array = ('look', 'greatlook', 'lookgreat', 'look look', 'badlook', «плохо выглядеть», «выглядеть», «смотреть»);

соответствует словам: внешний вид, великолепный внешний вид, великолепный внешний вид, плохой внешний вид

не соответствует: отлично выглядит, плохо выглядит, выглядит (конечный пробел (ы)), (пробел (ы)) выглядит.

Синтаксис приведенных ниже функций в порядке, но он соответствует всем

$ match = preg_grep ("/ $ var /", $ array);

$ match = preg_grep ("/ ^ $ var /", $ Массив); (сопоставьте слова с «взором» в начале)

но когда я включаю [^ \ s], выдает ошибку

$ match = preg_grep ("/ $ var [^ \ s] /", $ array);

Ошибка разбора: синтаксическая ошибка, неожиданный '^', ожидаемый T_STRING или T_VARIABLE

ТИА

Ответы [ 3 ]

1 голос
/ 03 июня 2010

регулярное выражение будет ^(?=.*look)[^\s]+$

preg_match("/^(?=.*{$var})[^\\s]+$/", $str);

<?
  $str = array('look', 'greatlook', 'lookgreat', 'look great', 'badlook', 'look bad', 'look ', ' look');
  $var = "look";
  $matches = preg_grep("/^(?=.*{$var})[^\\s]+$/", $str);
  print_r ($matches);
?>
//output
Array
(
    [0] => look
    [1] => greatlook
    [2] => lookgreat
    [4] => badlook
)
0 голосов
/ 03 июня 2010
$match = preg_grep ("/{$var}[^\s]/", $array);

Я считаю, что вам нужно заключить переменную в фигурные скобки, потому что символы продолжают без пробелов.

0 голосов
/ 03 июня 2010

Использование:

$match = preg_grep("/^\S*$var\S*$/", $array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...