如果中文措辞与普通文本相结合,如何在汉字前添加<br>
。
<?php
$string = 'Hello World 自立合作社';
/*
this is what I tried:
preg_match('/\\p{Han}/u', $string, $matches);
print_r($matches)
*/
?>
输出
Hello World</br>自立合作社
答案 0 :(得分:1)
这肯定不是最好的解决方案,但有一种方法是通过[\x00-\x7F]+
匹配一串ASCII字符,然后是非ASCII序列(用^
取消相同的模式)。它没有专门针对中国人,但由于the varied ranges of Chinese Unicode characters,这很棘手。
$string = 'Hello World 自立合作社';
// Capture ASCII sequence into $1 and non-ASCII into $2
echo preg_replace('/([\x00-\x7F]+)([^\x00-\x7F]+)/', '$1<br/>$2', $string);
// Prints:
// Hello World
// 自立合作社
http://codepad.viper-7.com/1kqpOx
实际上,这是一个改进版本,专门通过\p{Han}
定位中文字符。 $2
捕获还包括空格的\s
。
// This matches any non-Chinese in $1 followed by Chinese (and whitespace) in $2
echo preg_replace('/([^\p{Han}]+)([\p{Han}\s]+)/', '$1<br/>$2', $string);
答案 1 :(得分:1)
我不是中国人,但我希望这会有所帮助。
当您使用php时,您可以将preg_replace与look ahead construct一起使用。 它将用&lt; br&gt;。
替换所有空白字符(中文字符之前)$string = 'Hello World 自立合作社';
$pattern = "/\\p{Z}(?=\\p{Han})/ui"; // matches a white space before Chinese character.
$brStr = preg_replace($pattern, "<br>", $string);
echo $brStr;
我不知道\ p {Han}会匹配所有中文字符所以请查看有关unicode字符的更多信息here
希望这会有所帮助。祝好运! ;)