0

以下を確認してください。

$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // prints @example.com

.com なしで @example を返す方法はありますか?

したがって、基本的に、私が知っている文字のセットの間に存在する、知らない文字のセットを文字列で検索する必要があります。

したがって、次の例では「犬」を返します。

$string = "スポットという名前の愛犬を飼っていました";

次を使用して、文字列の最後のセクションを取得できます。

$pet_type = strstr($string, 'pet ');

これは可能ですか?

4

8 に答える 8

2

または爆発を2回使用する

$email  = 'name@example.com';
        $email  = explode( '@', $email);
        $email = explode('.', $email[1]);

        $email = $email[0];
        echo $email;

戻り値: 例

于 2012-08-17T13:11:06.473 に答える
1

タグで自分で質問に答えます。regex/preg_matchを使用すると、パターンを探して一致する値を抽出できます。

これは正規表現の紹介です。かなり難しそうに見えるかもしれませんが、神聖なものではなく、非常に論理的です:)

ドメインの例では、次のようなことができます。

preg_match("@[^\.]+", $email, $matches);
$domain = $matches[0];
于 2012-08-17T13:07:18.463 に答える
0
preg_match('/\@([a-zA-Z0-9-]+)?/', 'test@site-test.com', $matches);

Array ( [0] => @site [1] => site )

$matches[0]使いたいものです。

于 2012-08-17T13:19:50.273 に答える
0

あなたは試すことができます:

$str = '';
$email  = 'name@example.com';
$domain = strstr($email, '@');
$domain = str_split($domain);
foreach($domain as $split){
$str .= $split;
if($split == '.'){
break;
}
}
echo $str; // prints @example

また:

$email  = 'name@example.com';
$email = strstr($email, '@');
$email = explode(".", $domain);
echo $email[0]; // prints @example
于 2012-08-17T13:13:39.327 に答える
0

定期的な説明がとても簡単になるので、私はこれをよく使います。範囲に^を追加して反転させることができます。[^ aeiou]は、a、e、i、oおよびuを除くすべての文字の範囲です。

あなたの例のために試してみてください

@[^\.]+

これは「@example」と一致します。

于 2012-08-17T13:11:57.840 に答える
0

正規表現が必要です。

preg_match('/@(\w+)\.com/', $email, $match);
$domain = $match[1];

参照:http ://www.php.net/manual/fr/book.pcre.php

基本的に、preg_match()呼び出しでは、文字列$emailに次のシーケンスがあるかどうかをテストしています:アットマーク、次に括弧()を使用してグループにキャプチャされた正の数の単語文字(\w+)、次にドット(エスケープ:) \.、最後にcom。一致が成功すると、キャプチャグループが$match配列に配置され、左から右への位置インデックスを使用して取得できます。

入力に期待する文字のタイプに応じて、一致パターンを改善できます。全体的な正規表現は、単純な文字列の置換よりも低速ですが、はるかに強力です。それらがどのように機能するかを学ぶ価値があります。

于 2012-08-17T13:17:33.633 に答える
0

substr()と組み合わせてみるstrpos()

$start = strpos($email, '@');
$length = strpos($email, '.com') - $start;
$domain = substr($email, $start, $length);
于 2012-08-17T13:09:53.600 に答える
0
$email = 'name@host.com';
$at_pos = strpos($email, '@');
$dot_pos = strpos($email,'.');
$domain_length = $dot_pos - $at_pos;
$domain = substr($email,$at_pos,$domain_length);
echo $domain;
于 2012-08-17T13:10:39.373 に答える