0

是的,我认为这是正确的。我有一个包含 html 输出的字符串,我需要从该字符串中过滤文本和对象 html,翻译,然后重建它。

例子:

My email address is <a href="mailto:bla@bla.com">bla@bla.com</a> And I want you to email me.

所以我需要这个字符串是:

  1. 我的E-mail地址是
  2. bla@bla.com
  3. 我希望你给我发电子邮件。

所以基本上我想拆分并将所有内容都放在一个对象或数组中。我还需要知道哪些是文本,哪些是 html。

所以输出应该是这样的:

$arr[0] = Array("text" => "My email address is", "type" => "text");
$obj[1] = Array("text" => "<a href="mailto:bla@bla.com">bla@bla.com</a>", "type" => "text");
$obj[2] = Array("text" => "And I want you to email me.", "type" => "text");

这样我就可以翻译所有内容并将其返回。

现在我知道如何使用以及如何使用 preg_split,但这是一个示例。html 可以不同于
, 和所有其他 html 对象。那么 preg_split 是最好的方法还是有另一种更好的方法。导致初始文本从 jquery 推送。而且我不介意通过一些 ajax 调用来循环它。

提前致谢

4

2 回答 2

2

工作演示

尝试这个

代码

$(document).ready(function () {
    var obj = new Array();
    gettext($('div'));

    function gettext(ele) {
        $(ele).contents().each(function () {

            if (this.nodeValue == null) {

                gettext(this);

            } else {
                obj.push(this.nodeValue); // pushing to array
                alert(this.nodeValue)

            }

        });

    }

});

html

<div>My email address is <a href="mailto:bla@bla.com">bla@bla.com</a> And I want you to email me.</div>

希望这有帮助,谢谢

于 2013-09-12T17:08:17.140 回答
1

听起来您想使用http://simplehtmldom.sourceforge.net,它可以让您将 DOM 字符串转换为实际的 HTML DOM 结构,以便以合理(非字符串操作)的方式从中提取数据。

于 2013-09-12T16:27:41.443 回答