Аналог MySQL как функция

Предположим, что это - вопрос о куске, но является там аналогом MySQL КАК функция в PHP?

Так, например.

like('goo*','google.com');//is true
like('*gl*','google.com');//true
like('google.com','google.com')//also true

Я знаю regex rullez, но не знаю решения достигнуть этого

5
задан double-beep 29 March 2019 в 21:13
поделиться

4 ответа

Взгляните на функцию fnmatch .

6
ответ дан 18 December 2019 в 09:05
поделиться

Для первого используйте strpos :

like('goo*','google.com');      -->  strpos('goo','google.com') === 0

Следующее, вы можете использовать strpos :

like('*gl*','google.com');      -->  strpos('gl', 'google.com') !== false;

Далее вы можете просто использовать equals:

like('google.com','google.com') -->  'google.com' == 'google.com'

Конечно, вы можете использовать регулярное выражение для всех из них:

like('goo*','google.com');      -->  preg_match('#^goo.*$#','google.com') 
like('*gl*','google.com');      -->  preg_match('#^.*gl.*$#', 'google.com');
like('google.com','google.com') -->  preg_match('#^google\.com$#', 'google.com')

Edit : чтобы преобразовать ваши шаблоны в регулярное выражение, поместите ^ в в начале и $ в конце, затем замените * на . * и экранируйте . с.

9
ответ дан 18 December 2019 в 09:05
поделиться

В случае, если строки, которые вы хотите сопоставить, на самом деле являются файлами в каталоге, проверьте функцию glob: http://php.net/manual/en/function.glob.php

0
ответ дан 18 December 2019 в 09:05
поделиться

все эти сценарии могут быть выполнены с помощью strpos

3
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: