我正在尝试修改一个 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] => >...
)
看起来<a>
html 输出的标记部分被替换为"..."
,就像您在 Chrome 的开发人员工具 html 检查器中看到的那样,在您展开它之前,HTML 看起来像:
<span id="cbMa47822" class="cbMailRepl">...</span>
我深入研究了 php 代码,试图找出它是如何$html
构造的,但这完全超出了我的理解。
出于学习目的,我的问题是:
为什么
[1]
结果中没有print_r($html_array)
如何更准确地测试变量的值,更准确地说,我的意思是完全没有 html 输入,例如如果值是
"<a href="htt://foo.com">foo</a>"
,是否应该按原样显示 HTML,而不是链接(当我使用时print_r
,它返回链接)?最重要的是,根据上面给出的信息,你能告诉我如何从这样的变量中提取电子邮件地址吗?
最后,对于那些愿意深入研究的人来说,我所说的变量是$this->tableContent[$userIdx][1][6]->value
in \components\com_comprofiler\plugin\templates\default\default.php
,最初它不在代码中,但我做了一些测试并确认它包含电子邮件地址。我在第 450 行和第 451 行之间插入了以下代码
<?php $html_array = explode("\"",$this->tableContent[$userIdx][1][6]->value);echo $html_array[5]; ?>