0

DB から抽出する必要があります。1 つの列のレコードが次のように結合されています: 最初の文字 (Firstname1)。Lastname1、最初の文字 (Firstname2)。姓 2、....

ここに私が解決しようとした方法の例があります...

     $text2= "T. Toth, M. A. Carlo de Miller, T. Stallone";
     $keywords = preg_split("/,/", "$text2");

     print_r($keywords);

    //I got a result in this way:

    //Array ( [0] => T. Toth [1] => M. A. Carlo de Miller [2] => T. Stallone ) 

    // I want a result of the form :

    //Array ( [0] => T [1] => Toth [2] => M. A. [3] => Carlo de Miller [4] => T  and    so on....

MYSQL にある場合でも、誰かが続行方法のアイデアを得ることができます

4

3 に答える 3

1

もう 1 つのバリアント:

$text2= "T. Toth, M. A. Carlo de Miller, T. Stallone";
$result = array();
foreach (explode(",",$text2) as $row)
{
  $row = explode(".",$row);
  $last = array_pop($row);
  $result[] = join(".",$row).".";
  $result[] = $last;
}
print_r($result);

結果:

Array ( [0] => T. [1] => Toth [2] => M. A. [3] => Carlo de Miller [4] => T. [5] => Stallone )
于 2013-03-08T21:39:18.290 に答える
0

preg_splitこれには適切な機能ではないかもしれません。これを試してくださいpreg_match_all

$text2= "T. Toth, M. A. Carlo de Miller, T. Stallone";
preg_match_all("/\w{2,}(?:\s\w{2,})*|\w\.(?:\s\w\.)*/i", $text2, $matches);
print_r($matches[0]);

これにより、名前とイニシャルが選択され、先頭/末尾の空白が除外されます。

最初に一致する完全な名前:\w{2,}(?:\s\w{2,})*

2 番目の試合のイニシャル:\w\.(?:\s\w\.)*

結果:

Array ( [0] => Array ( [0] => T. [1] => Toth [2] => M. A. [3] => Carlo de Miller [4] => T. [5] => Stallone ) )
于 2013-03-08T21:35:09.700 に答える
0

この正規表現は、多かれ少なかれあなたが望むことをするはずだと思います:

/
  (?:^|,)           # Start of subject or comma
  \s*               # Optional white space
  ((?:[a-z]\.\s*)+) # At least one occurrence of alpha followed by dot
  \s*               # Consume trailing whitespace
/ix

PREG_SPLIT_NO_EMPTYおよびキャプチャ フラグと組み合わせて使用​​するとPREG_SPLIT_DELIM_CAPTURE、この式は目的の結果を取得します。唯一の注意点は、先頭/末尾の空白もキャプチャすることです。これを回避する方法がわかりません。結果を使用すると、簡単に切り取ることができます。

$str = 'T. Toth, M. A. Carlo de Miller, T. Stallone';
$expr = '/(?:^|,)\s*((?:[a-z]\.\s*)+)\s*/i';
$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;

$keywords = preg_split($expr, $str, -1, $flags);

print_r($keywords);

動いているのを見る

于 2013-03-08T21:35:15.887 に答える