Удаление слов из строки в php - PullRequest
2 голосов
/ 01 февраля 2012

у меня есть строка

показ 1 - 12 из 324 результатов

я хочу указать эту строку как

324 Результаты

или

324

только

Обратите внимание, что 324 - это число, которое будет меняться при каждом получении строки. это может быть 2 цифры (34), три или 4 цифры.

В настоящее время я успешен только в выводе слова с использованием кода

'str_replace('Showing', '', $s)'

это выдает положить как

1 - 12 из 324 Результаты

как я могу использовать функцию str_replace для достижения моей цели? или я должен использовать любую другую функцию PHP?

Ответы [ 7 ]

6 голосов
/ 01 февраля 2012

Вы можете использовать preg_match().

preg_match('/(?P<results>\d+)\sResults$/', $str, $matches);

CodePad .

Затем проверьте $matches['results'] для количества результатов или $matches[0] для количества результатов и подстроку ' Results'.

1 голос
/ 01 февраля 2012

Используйте это так просто

$exampleString = "showing 1 - 12 of 324 Results";
$arrayResult   =explode(" ",$exampleString);

//output will be 324,according to the index the result will change
echo $arrayResult[5];
1 голос
/ 01 февраля 2012

Это должно работать:

preg_replace('~^.*?(\d+\s+Results)$~i', '$1', 'showing 1 - 12 of 324 Results');

ИЛИ

preg_match('~\d+\s+Results$~i', 'showing 1 - 12 of 324 Results', $m);
var_dump ( $m[0] );
0 голосов
/ 01 февраля 2012
$results = explode('of', $str);
$results = (int)$results[1];
0 голосов
/ 01 февраля 2012

проверьте это:

$result = "showing 1 - 12 of 324 Results";
$buffer = substr( $result , strpos( $result , "of") + 2 , strlen($result));
//$buffer is : 324 Results

$buffer = explode(" ", $buffer);

// you have to block 1 : $buffer[0] ~ '324' AND 2 : $buffer[1] : 'result'
0 голосов
/ 01 февраля 2012

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

$arr = explode(' ', 'showing 1 - 12 of 324 Results');
$number = $arr[count($arr)-2];

Таким образом, вы получите общее количество результатов.И в любое время вы можете добавить слово «Результаты».Не забудьте trim() строку до вызова explode().

0 голосов
/ 01 февраля 2012

Одним из решений было бы разделение строк на " of " и снова на " Results".

$temp = explode(' of ', $yourString);
$temp2 = explode(' Results', $temp[1]);
$totalResults = $temp2[0];

Вы также можете использовать preg_match(), как предложил Алекс, что является более «элегантным» решением, так как оно выполняется с помощью одного вызова функции, но может быть трудно понять, если вы не знакомы с регулярным выражением.

...