我在获取此字符串的子字符串时遇到问题:
GMOクラウドの芦田です。前回、OpenSocialに対応したSNSの「OpenPNE」をインストールしたので、今回はソーシャルアプリを作ってOpenPNE上で公開してみます。また、作ったアプリをmixiアプリとしてmixiにも登録してみましょう。
我只想显示最多第n个字符,或者至少不显示损坏/不完整的字词。
起初我试过了。
$content = "GMOクラウドの芦田です。前回、OpenSocialに対応したSNSの「OpenPNE」をインストールしたので、今回はソーシャルアプリを作ってOpenPNE上で公開してみます。また、作ったアプリをmixiアプリとしてmixiにも登録してみましょう。";
$content = mb_substr($content, 0, 10, 'UTF-8');
但结果是:
GMOクラウドの芦田です。前回、OpenSo
这个词不完整
我也尝试过使用正则表达式:
$content = "GMOクラウドの芦田です。前回、OpenSocialに対応したSNSの「OpenPNE」をインストールしたので、今回はソーシャルアプリを作ってOpenPNE上で公開してみます。また、作ったアプリをmixiアプリとしてmixiにも登録してみましょう。";
if (preg_match('/^.{1,40}\b/s', $content, $match))
{
print_r($match);
}
导致:
Array ( [0] =>GMO )
可以做些什么来获得像
这样的东西GMOクラウドの芦田です。前回、OpenSocial
字应该是完整的。我可以使用php中的mb_函数来完成此操作吗?
答案 0 :(得分:0)
你需要像Mecab这样的形态分析工具将字符串转换为数组。可以通过命令行和PHP extension使用Mecab。如果您使用自制程序,请安装 mecab 和 mecab-ipadic 。
$words = [
'GMO', 'クラウド', 'の', '芦田', 'です。', '前回、',
'OpenSocial', 'に', '対応した', 'SNS'
];
$max = 26;
$ret = '';
$i = 0;
while(mb_strlen($ret.$words[$i], 'UTF-8') <= $max) {
$ret .= $words[$i];
$i += 1;
}
var_dump(
mb_strlen($ret, 'UTF-8'),
'GMOクラウドの芦田です。前回、OpenSocial' === $ret
);