Так как вы не опубликовали свою строку, на это можно ответить только в общем случае.
Всякий раз, когда вы используете функцию для строки, чтобы сделать ее строчной, вся строка будет сделана строчной.Строковые функции осведомлены только о строках, они не знают о содержимом, специально написанном в этих строках.
В вашем сценарии вы не хотите использовать строчную букву для всей строки, которую я предполагаю.Вы хотите, чтобы строчные буквы были только частями этой строки, другие части, URL-адреса не должны быть изменены в их случае.
Чтобы сделать это, вы должны сначала проанализировать вашу строку в этих двух разных частях, давайте назовем их text
и URLs
.Затем вам нужно применить строчную функцию только к частям текста типа.После этого вам нужно снова объединить все части в их исходном порядке.
Если содержимое строки семантически просто, вы можете разбить строку на пробелы.Затем вы можете проверить каждую часть, если она начинается с http://
или https://
(is_url()
?), А если нет, выполнить операцию в нижнем регистре:
$text = 'your content http://link.me/now! might differ';
$fragments = explode(' ', $text);
foreach($fragments as &$fragment) {
if (is_not_url($fragment))
$fragment = strtolower($fragment) // or mb_strtolower
;
}
unset($fragment); // remove reference
$lowercase = implode(' ', $fragments);
Чтобы этот код работал, вынужно определить функцию is_not_url()
.Кроме того, исходный текст должен содержать содержимое, позволяющее работать с элементарным синтаксическим анализом на основе разделителя пробелов.
Надеемся, этот пример поможет вам освоиться с кодированием и пониманием вашей проблемы.