2014-02-17 2 views
1

У меня есть большая строка, $string, в которой я пытаюсь посмотреть, указано ли количество определенного элемента, «игра».Получите количество в числовой или письменной форме перед подстрокой в ​​php

Например:

$string = "...asdasda fdf **4 games** asdasd sad ..."; 

ИЛИ

$string = "...asdasda fdf **nine games** asdasd sad ..."; 
//maximum is around 15 but till about 10 should be enough for now 

ИЛИ

$string = "...asdasda fdf asdasd sad **a game** asda ..."; 

"игра" может появиться более чем один раз в $string.
если «игра» всегда появляется в это форма единственного числа («игра», а не «игры»), то величина 1.

Количество связан ни с одной из «игры» вхождения "s должны быть такими же, как он будет говорить о том же количестве «игр», хотя он может не всегда упоминать количество, поэтому любое количество до «игр» должно давать правильную сумму.

Как мне лучше всего это делать в php. Любое pregmatch, или регулярное выражение поможет, как я понимаю, но не так хорошо с ним.

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

ответ

1

Вы можете использовать регулярное выражение:

\w+(?=\sgames?) 

для захвата количества, которое дается в цифрах или буквах.

Вы можете написать функцию для преобразования количества строк в числовое число, если это необходимо.

Working example of the regex on regex101.com.

+0

Извините, вы можете немного сломать это для меня. От взгляда на это он находит слово перед игрой слов (с одним пробелом перед игрой слов). Это все, что он делает? Как это относится к количеству словесной игры, появляющейся в строке? Должен ли я затем создать функцию, которая принимает все экземпляры в отдельности, а затем, когда она найдет совпадение с количеством, отличным от «1» или «а», получит такое количество и сломается, иначе количество будет единицей? – Sortitout

+0

@Sortitout Да, это то, что он делает. Вы можете легко записывать числа и вычислять их, но вам нужно преобразовать слова в числа с помощью функции. Вы можете найти такую ​​функцию онлайн, если вы ее найдете в Google. –

+0

Спасибо, это сработало. Хотя моя пользовательская функция для получения числового значения немного многословна: P – Sortitout

Смежные вопросы