я хочу заменить несколько пробелов или
одним пробелом, поэтому я попробовал код ниже, используя функцию preg_replace
,
поэтому он правильно заменяет пробелы, но также помещает нераспознанные символы в выходную строку,
для демонстрации я беру переменную $string
, но на самом деле это могут быть данные из базы данных на стороне сервера, см. код ниже:
<?php
$string = "123080345 900113760 165604100012";
echo preg_replace("/(\s| )+/",' ',$string);
//output: 123080345� 900113760� 165604100012
//expected output: 123080345 900113760 165604100012
Итак, мой вопрос почему preg_replace помещает нераспознанные символы и как получить чистый и четкий вывод,
который не имеет нераспознанных символов, как я показал в приведенном выше коде как ожидаемый результат
Хотя это просто строка с цифрами, spaces
и
,
но я думаю, что в базе данных это UTF-8
закодированная строка, поэтому, когда я пытался preg_replace
, он возвращает нераспознанные символы.
так что это работает, когда я пробовал то же регулярное выражение с идентификатором /u
для unicode
поэтому ниже мое решение:
<?php
$string = "123080345 900113760 165604100012";
echo preg_replace("/(\s| )+/u",' ',$string); //u for unicode characters
//output: 123080345 900113760 165604100012
Я надеюсь, что это может быть полезно для кого-то, спасибо.