что равно mb_ereg_match (), равному этому preg_match (& ldquo; / \ b $ q / i & rdquo;, $ name) [duplicate]

Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.

например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.

public Class myClass
{
   public int prop1 {get;set;}
}

Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref.prop1 = 1;  //This line throws error
     }
}

выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.

Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref = new myClass();
        ref.prop1 = 1;  
     }
}
12
задан tchrist 29 March 2012 в 19:13
поделиться

3 ответа

Я думаю, что проблема намного проще: вы забыли указать модификатор u . Свойства символа Юникода: доступны только в режиме UTF-8 .

Ваше регулярное выражение должно быть:

// unicode letters, apostrophe, hyphen, space
$namePattern = '/^[-\' \p{L}]+$/u';
23
ответ дан NikiC 1 September 2018 в 00:56
поделиться

Прежде всего, ваша жизнь будет намного проще, если вы будете использовать одиночные апострофы вместо двойных кавычек при написании их - вам нужна только одна обратная косая черта. Во-вторых, следует также включить сочетание меток \pM. Если вы найдете символ, который не соответствует, пожалуйста, узнайте его кодовую точку Юникода, а затем вы можете использовать http://www.fileformat.info/info/unicode/ , чтобы выяснить, где он находится. Я нашел http://hsivonen.iki.fi/php-utf8/ бесценным инструментом при отладке с помощью свойств UTF-8 (не забудьте перевести его в шестнадцатеричный код перед попыткой поиска: array_map('dechex', utf8ToUnicode($text))).

Например, Ă окажется http://www.fileformat.info/info/unicode/char/0102/index.htm и будет в Лу, и поэтому L должен соответствовать ему, и он подходит для меня. Другой символ - http://www.fileformat.info/info/unicode/char/5f20/index.htm , а также isLetter и действительно подходит для меня. У вас есть таблицы символов Unicode, скомпилированные в?

0
ответ дан chx 1 September 2018 в 00:56
поделиться

Если вы хотите заменить Unicode old pattern на new pattern, вы должны написать:

$text = preg_replace('/\bold pattern\b/u', 'new pattern', $text);

Таким образом, ключ здесь - u модификатор

Примечание: ваш сервер php version shoud будет как минимум PHP 4.3.5

, как указано здесь php.net | Модификаторы паттерна

u (PCRE_UTF8) Этот модификатор включает дополнительные функции PCRE, которые несовместимы с Perl. Строки шаблонов рассматриваются как UTF-8. Этот модификатор доступен с PHP 4.1.0 или выше в Unix и с PHP 4.2.3 на win32. UTF-8 справедливость шаблона проверяется с PHP 4.3.5.

Спасибо AgreeOrNot, которые дают мне этот ключ здесь preg_replace сопоставить целое слово в арабском

Я пробовал это, и он работал в localhost, но когда я пытаюсь его на удаленном сервере, это не сработало, и я обнаружил, что php.net начинает использовать модификатор u в PHP 4.3.5. , Я обновляю версию php и работает

. Важно знать, что этот метод очень полезен для арабских пользователей (عربي), потому что, как я считаю, unicode - лучший кодировщик для арабского языка, а замена не будет если вы не используете модификатор u, см. следующий пример, он должен работать с вами

$text = preg_replace('/\bمرحبا بك\b/u', 'NEW', $text);

0
ответ дан Community 1 September 2018 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: