Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Поиск буквы в слове с выводом её порядкового номера (https://javascript.ru/forum/server/70211-poisk-bukvy-v-slove-s-vyvodom-ejo-poryadkovogo-nomera.html)

Nexus 20.08.2017 15:22

Цитата:

Сообщение от Sonya (Сообщение 462104)
Нет, если этой буквы вообще нет в слове, то выводить "0".

$str='СлОво';
$num=mb_strpos(mb_strtolower($str),'о',0);
if($num)
echo 'Первая буква «о» встречается в строке «'.$str.'» символом №'.(1+$num);
else
echo 'Not found';
exit;

laimas 20.08.2017 15:26

Nexus,
mb_stripos mb_strtolower, смещение по умолчанию и так нулевое, а вот кодировку либо указывать, либо сразу ее определить для многобайтных строк, иначе могут быть и не предсказуемые результаты.

Nexus 20.08.2017 15:39

Цитата:

Сообщение от laimas (Сообщение 462108)
Nexus,
mb_stripos mb_strtolower, смещение по умолчанию и так нулевое, а вот кодировку либо указывать, либо сразу ее определить для многобайтных строк, иначе могут быть и не предсказуемые результаты.

Предпочитаю явно указать на игнорирование регистра, приведя все к lowercase. Буковку «i» можно и не заметить в названии «mb_stripos».
Про кодировку согласен, лучше указать.

Sonya 20.08.2017 15:40

Спасибо!

laimas 20.08.2017 16:00

Цитата:

Сообщение от Nexus
Буковку «i» можно и не заметить в названии «mb_stripos».

Оригинально, что требуется постоянно читать имя функции? А как в случае с рег. выражением, модификатор i тоже проблемный? :)

Nexus 20.08.2017 16:07

Цитата:

Сообщение от laimas (Сообщение 462112)
Оригинально, что требуется постоянно читать имя функции? А как в случае с рег. выражением, модификатор i тоже проблемный? :)

Человек при чтении не всегда каждую букву рассматривает, обычно внимание обращается на начало и конец слова.
Модификаторы посередине регулярки не вставляются.

laimas 20.08.2017 16:16

Цитата:

Сообщение от Nexus
Человек при чтении не всегда каждую букву рассматривает, обычно внимание обращается на начало и конец слова.

И что теперь не использовать массу функций? Просто нужно знать инструментарий языка, о наборе его функций и использовать то, что выгоднее, без всяких "человек лох, видит совсем не то". ;)

Nexus 20.08.2017 18:03

Цитата:

Сообщение от laimas (Сообщение 462115)
И что теперь не использовать массу функций? Просто нужно знать инструментарий языка, о наборе его функций и использовать то, что выгоднее, без всяких "человек лох, видит совсем не то". ;)

Я тебе ничего не запрещал и не писал, что какие-то конкретные функции использовать нельзя. Это ты мне пишешь, что нужно использовать не две функции, а одну.
Можно юзать оба способа, разницы никакой.

laimas 20.08.2017 19:20

Цитата:

Сообщение от Nexus
тебе ничего не запрещал и не писал, что какие-то конкретные функции использовать нельзя.

Я тоже вроде бы как не обвинял в запрете, просто странная логика поясняющая предпочтения. Кстати, разница есть - дважды производится разбор одной строки.


Часовой пояс GMT +3, время: 08:00.