1

我在获取此字符串的子字符串时遇到问题:

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_ 函数来完成此操作吗?

4

1 回答 1

0

您需要 Mecab 等形态分析工具将字符串转换为数组。Mecab 可以被命令行和PHP 扩展使用。如果您使用自制软件,请安装mecabmecab-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
);
于 2013-06-08T11:30:35.303 回答