Еще один вопрос о капитализации - PullRequest
0 голосов
/ 01 августа 2011

вот что я пытаюсь сделать. У меня есть названия страниц. Я пытаюсь использовать последнюю букву первого слова в каждой строке

Примеры:

ПРИВЕТ

черт возьми, как дела

Я могу заставить его работать с одним словом, но не могу понять, как это сделать, если существует более одного слова. Любая помощь будет отличной !!

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 01 августа 2011

Поскольку вы знаете, как это работает с 1 словом, вам нужно только получить первое слово, а затем поставить свой алгоритм.

  1. Попробуйте preg_replace_callback с "/^(\w+)/"
  2. Заменить последний символ в методе обратного вызова.

preg_replace_callback: http://php.net/manual/en/function.preg-replace-callback.php

ОБНОВЛЕНИЕ - рабочий код:

$string = "This is a test";
$string = preg_replace_callback(
        '/^(\w+)/',
        create_function(
            '$matches',
            'return yourUCLastAlgorithm($matches[0]);'
        ),
        $string
    );
echo $string;

UPDATE2 - использование preg_replace с модификатором e:

$string = "This is a test";
$string = preg_replace(
        '/^(\w+)/e',
        'yourUCLastAlgorithm("$1")',
        $string
    );
echo $string;
1 голос
/ 01 августа 2011

попробуйте

<?php

    $title                  = "Hello World";
    list($firstword, $rest) = explode(" ", $title, 2);
    $firstword              = strrev(ucfirst(strrev($firstword)));
    $title                  = $firstword . " " . $rest;

    print $title;

Если вы хотите узнать больше о любой функции, см. explode , strrev , list , ucfirst

0 голосов
/ 01 августа 2011

Попробуйте это:

$string = preg_replace('/^([ ]+)?([^ ]*)([a-z])?(.*)?$/i', "$1.$2.strtoupper($3).$4", $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...