0

現在、正規表現に問題があります。私がやろうとしているのは、反復の各行について、次のタイプのパターンをチェックすることです。姓、名名前が見つかった場合は、名の最初の文字と最初の6文字を取得します。姓の名前を入力し、電子メールとして作成します。

私は次のものを持っています:

$checklast = "[A-z],";
$checkfirst = "[A-z]";
if (ereg($checklast, $parts[1])||ereg($checkfirst, $parts[2])){ 
    $first = preg_replace($checkfirst, $checkfirst{1,1}, $parts[2]);
    print "<a href='mailto:$first.$last@email.com;'> $parts[$i] </a>"; 
}

これは明らかにコードを壊しました。しかし、私は最初は名の最初の文字だけを見つけようとしていましたが、その後、最後の名前の最初の6文字の後に@email.comが続きました。これはうまくいきませんでした。この時点でどうしたらよいかわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

2

このようなものはどうですか:

$name = 'Smith, John';
$email = preg_replace('/([a-z]{1,6})[a-z]*?,[\\s]([a-z])[a-z]*/i', 
                      '\\2.\\1@email.com', $name);

echo $email; // J.Smith@email.com

乾杯

于 2012-10-30T04:57:47.070 に答える