У меня возникла проблема, когда я пытаюсь загладить первую букву после символа или символа и на самом деле отлично работает, но если моя строка содержит пробелы между словами, код игнорирует верхний регистр и печатает как , например:В верхнем регистре после символа или символа с PHP
$string = "•TEXT";
$string = ucfirst(strtolower($string));
$string = preg_replace_callback('/[.!?].*?\w/', create_function('$matches', 'return strtoupper($matches[0]);'),$string);
$string = preg_replace('/^•([a-z])([a-z]+)$/e', '"•" . strtoupper("\\1") . "\2"', $string);
echo $string; //This print •Text
В приведенном выше примере показан текст правильно, но в нем нет пробелов. Если у вас есть пробел, как следующий код, он отображает весь текст в нижнем регистре, например:
$string = "•TEXT EXAMPLE";
$string = ucfirst(strtolower($string));
$string = preg_replace_callback('/[.!?].*?\w/', create_function('$matches', 'return strtoupper($matches[0]);'),$string);
$string = preg_replace('/^•([a-z])([a-z]+)$/e', '"•" . strtoupper("\\1") . "\2"', $string);
echo $string; //This print •text example (This is my problem, all is lowercased)
Помогите мне с этим?
прекрасно работает, но когда я пытаюсь использовать его с моим сценарием он перестанет работать, я уверен, что я делаю что-то неправильно, но я не знаю, где проблема , Я беру текст из XML-фида @ Twisted1919 '$ str = eregi_replace (". * "," ", $ part [$ i]); if (preg_match ('/ (^ &[^;] +;) (. *) /', $ Str, $ matches)) { list ($ discard, $ entity, $ text) = $ matches; // list (, $ entity, $ text) = $ matches; // это тоже работает $ string = $ entity. подрезать (ucfirst (strtolower ($ текста))); echo $ string; } else { # Ошибка совпадения } ' –
После вашего' eregi_replace() 'ваша' $ str' все еще содержит что-то? Вы должны использовать 'preg_ *' вместо 'ereg_ *'. Кроме того, вы должны ввести тип '$ str' в строку:' $ str = (string) preg_replace ('/ [^ <] */ix', '', $ part [$ i]); '(регулярное выражение не проверяется) –
Twisted1919