Итак, у меня есть некоторые предложения, которые я вставляю в базу данных с некоторыми процессами автоматической коррекции. Следующее предложение:Верхняя буква каждой первой буквы слова с preg_replace
$sentence = "Is this dog your's because it can't be mine";
А следующий код, чтобы капитализировать каждое слово, но убедитесь, что он не капитализировать сокращений (например, нет.):
str_replace(
"'S", "'s", preg_replace(
"/(\w+)n'T?/", "$1n't", (
preg_replace(
"/\b[a-z]/e",
'strtoupper("$0")',
ucwords($sentence)
)
)
)
);
Когда вторя, результат как следующим образом:
Is This Dog Your's Because It Can't Be Mine
Это то, что я хочу, чтобы это сделать, однако, что это вводит в моей базе данных MySQL является:
Is This Dog Your's Because It Can'T Be Mine
Я понятия не имею, почему это происходит ... Я предполагаю, что где-то я что-то испортил.
* «Я понятия не имею, почему это происходит ...» * - Смотрите здесь: '' strtoupper («$ 0») ', это происходит потому, что вы так написали. и больше не используйте модификатор '/ e' (eval). вместо этого используйте обратный вызов. Этот модификатор теперь устарел, и он имеет серьезные последствия для безопасности, поэтому это действительно хорошее предложение для улучшения вашего кода. – hakre
Touche, мой хороший сэр – Gramps
Вам не хватает трех закрывающих круглых скобок. – ironcito