Yaşam Alanları PHP içermeyen sadece dizeleri maç için regex desen

3 Cevap php

Ben kelime / değişken içerdiği desen, ancak beyaz boşluk yok deyişle karşı tek maç maç istiyorum. Öneri verin.

$ Var = 'göz';

$array = ('look', 'greatlook', 'lookgreat', 'look great', 'badlook', 'look bad', 'look ', ' look');

bak, greatlook, lookgreat, badlook: kelimeleri maçlar

olmayan karşılaşmalar: (space (s) sondaki) bakmak, büyük, kötü bir görünüm bakmak, (boşluk (lar)) bak.

Aşağıdaki işlevlerin sözdizimi Tamam, ama her şeyi maçları

$ Maç = preg_grep ("/ $ var /", $ dizi);

$match = preg_grep ("/^$var/", $array); (match words with 'look' at the start)

Ben [^ \ s] içerir ama ne zaman, bir hata verir

$ Maç = preg_grep ("/ $ var [^ \ s] /", $ dizi);

T_STRING veya T_VARIABLE bekliyor, sözdizimi hatası, beklenmedik '^': hatası Ayrıştırma

TIA

3 Cevap

Kullanın:

$match = preg_grep("/^\S*$var\S*$/", $array);

Regex ^(?=.*look)[^\s]+$ olurdu

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
)
$match = preg_grep ("/{$var}[^\s]/", $array);

Ben karakterler boşluklarla olmadan devam çünkü kıvırcık parantez içinde değişken içine gerektiğine inanıyorum.