preg_replace Я хочу заменить текст на китайском + английском внутри кавычек

Я хочу заменить текст на китайском + английском внутри кавычек:

пример исходного текста:

emMsg('您的php版本过低,请选用支持PHP5的环境安装английское слово。');

or

(程序不会自动创建数据库,请提前创建一个空数据库或使用已有数据库)

preg_replace("/(?:[(]([\p{Han}]+)[)] )?/ux", '-', $val);

но результат не получен, что я делаю не так?


person Den68    schedule 06.12.2013    source источник
comment
Вы показали нам образец исходного текста. Не могли бы вы также предоставить нам пример результата? Что вы ожидаете получить?   -  person Jurik    schedule 06.12.2013
comment
Есть много предыдущих вопросов/ответов на эту тему. stackoverflow.com/ вопросы/8989133/   -  person Andrew - OpenGeoCode    schedule 06.12.2013
comment
to Jurik: Ожидайте, что весь текст внутри скобок будет обрезан и заменен на '-'   -  person Den68    schedule 06.12.2013


Ответы (1)


$str = "emMsg('您的php版本过低,请选用支持PHP5的环境安装english word。');";
$res = preg_replace( "~emMsg\(('*)(.+?)('*)\);~", 'emMsg(\\1-\\3);', $str );
print_r( $res );

Ты это имеешь ввиду?

$str = "emMsg('您的php版本过低,请选用支持PHP5的环境安装english word。');";
$str = preg_replace( "~\p{Han}+~u", '', $str );
$res = preg_replace( "~emMsg\(('*)(.+?)('*)\);~", 'emMsg(\\1\\2\\3);', $str );
print_r( $res );

Я не думаю, что вы можете сопоставить все ханьские, смешанные с латынью, в любом формате.

person Kohjah Breese    schedule 07.12.2013
comment
Спасибо за ваш пример, но он не учитывает наличие китайского языка в скобках. Следует удалить только в клнструкции китайский алфавит. В исходных данных в скобках может находиться и только английский текст. - person Den68; 08.12.2013