Задача: вернуть boolean при поиске (с первого символа) подстроки в тексте (без учёта регистра).
Задачка может показаться примитивной ) А какое идеальное решение?
$a = "текст";
$b = "текс";
if(mb_stripos($a, $b) === 0)
if(preg_match("/^текс/i", $a))
_____________
Принимаю заказы, писать в ЛС
Вы каким вариантом воспользуетесь? Или предложите свой.
_____________
Принимаю заказы, писать в ЛС
Цитата (walerus @ 6.02.2017 - 01:37) |
2 |
Тогда и про
preg_quote (экранирует символы в регулярных выражениях) сказать надо.
_____________
Принимаю заказы, писать в ЛС
надо тесты. если на скорость. но я бы выбрал тоже второе.
stristr использую.
Мультибайтные кодировки не использую.
_____________
Бесплатному сыру в дырки не заглядывают...
FatCat, можешь объяснить свой выбор?
_____________
Принимаю заказы, писать в ЛС
Игорь_Vasinsky
8.02.2017 - 13:08
Цитата |
FatCat, можешь объяснить свой выбор? |
олдскулл - олдскилл
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Цитата (PHP.NET - STRSTR) |
Если нужно лишь определить, встречается ли подстрока needle в haystack, используйте более быструю и менее ресурсоемкую функцию strpos(). |
В следующем сообщении тесты, кто писал документацию
_____________
Принимаю заказы, писать в ЛС
Цитата (depp @ 6.02.2017 - 13:15) |
надо тесты. если на скорость. но я бы выбрал тоже второе. |
<?php
$time_start = microtime(true);
$a = "Ленинград";
$b = "Ленин";
for($c = 0; $c <= 10000; $c++) {
}
echo 'Время выполнения: ' . (microtime(true) - $time_start) . ' Микросекунд';
?>
1. Время выполнения: 0.08 - 0.11. Пиковое значение объема памяти: 377 920 Байт
if(mb_stripos($a, $b) === 0) {
}
1 - 0.08
2 - 0.08
3 - 0.08
4 - 0.11
5 - 0.08
6 - 0.09
7 - 0.09
8 - 0.10
9 - 0.07
10 - 0.08
2. Время выполнения: 0.003 - 0.005. Пиковое значение объема памяти: 378 120 Байт
$pattern = "/^" . preg_quote($b, '/') . "/ui";
if(preg_match($pattern, $a)) {
}
1 - 0.003
2 - 0.004
3 - 0.004
4 - 0.005
5 - 0.004
6 - 0.004
7 - 0.004
8 - 0.004
9 - 0.004
10 - 0.003
3. Время выполнения: 0.001 - 0.005. Пиковое значение объема памяти: 377 944 Байт
if(!stristr($a, $b) === FALSE) {
}
1 - 0.001
2 - 0.001
3 - 0.002
4 - 0.003
5 - 0.003
6 - 0.005
7 - 0.005
8 - 0.003
9 - 0.005
10 - 0.001
_____________
Принимаю заказы, писать в ЛС