-2

変数から電子メール アドレスを抽出するために、php ファイル (拡張子は Joomla Community Builder 1.9.1、ファイルは) を変更しようとしています。\components\com_comprofiler\plugin\templates\default\default.php

説明のために、この変数が であるとしましょう$html。この変数が、対象とする電子メール アドレスを含む正しい変数であることを確認するために、次のように挿入します。

<pre><?php print_r($html) ?></pre>

ファイルに入力すると、その出力はmailtoリンク付きの電子メールアドレスであり、対応するHTMLは次のようなものです

<span id="cbMa47822" class="cbMailRepl"><a href="mailto:myemail@yahoo.com">myemail@yahoo.com</a></span>

だから私は使用できると思います:

<?php $html_array = explode("\"",$html);echo $html_array[5]; ?>

Io get'mailto:myemail@yahoo.com';しかし、実際には次の通知のみを返します。

未定義のオフセット:5

だから私print_r($html_array)、そしてそれは次のようなものを返します

Array
(
    [0] =>  cbMa14768
    [2] =>  class=
    [3] => cbMailRepl
    [4] => >... 
)

Chrome の開発者ツールの html インスペクタに表示されるように、html 出力の<a>タグ部分が に置き換えられて"..."いるように見えます。展開する前の HTML は次のようになります。

<span id="cbMa47822" class="cbMailRepl">...</span>

これがどのように構成されているかを調べようとして、php コードを詳しく調べまし$htmlたが、まったく理解できません。

学習目的で、私の質問は次のとおりです。

  1. [1]の結果になぜないのかprint_r($html_array)

  2. 変数の値をより正確にテストする方法"<a href="htt://foo.com">foo</a>"print_r?

  3. そして最も重要なことは、上記の情報に基づいて、このような変数から電子メール アドレスを抽出する方法に関するヒントを教えてください。

最後に、これを詳しく調べたい人のために、私が話している変数は にあります$this->tableContent[$userIdx][1][6]->value\components\com_comprofiler\plugin\templates\default\default.phpもともとはコードにはありませんでしたが、いくつかのテストを行い、電子メール アドレスが含まれていることを確認しました。450行目と451行目の間に次のコードを挿入しました

<?php $html_array = explode("\"",$this->tableContent[$userIdx][1][6]->value);echo $html_array[5]; ?>
4

2 に答える 2

0

説明したように HTML 構造体から電子メール アドレスを抽出するには、正規表現と を使用するだけですpreg_match

$html = '<span id="cbMa47822" class="cbMailRepl"><a href="mailto:myemail@yahoo.com">myemail@yahoo.com</a></span>';

preg_match("/mailto:(.*)\">/is", $html, $matches);

echo '<pre>';
print_r($matches);
echo '</pre>';

出力は次のようになります。

Array
(
    [0] => mailto:myemail@yahoo.com">
    [1] => myemail@yahoo.com
)

その電子メール アドレスにアクセスするには、次のようにします。

echo $matches[1];

出力は次のようになります。

myemail@yahoo.com
于 2014-06-06T20:48:05.807 に答える
-1
  1. リンクを回避するには、エスケープ シーケンスを使用できます。
  2. 指定された文字列が電子メールアドレスのパターンと一致する場合は、正規表現を使用して一致させ、それを出力できます
  3. PHP は、最も奇妙なタスクを実行できる関数を幅広くサポートしているので、それらを検索してください。
于 2014-06-06T20:40:43.353 に答える