Php 在XPath中使用OR运算符

Php 在XPath中使用OR运算符,php,xml,xpath,xml-parsing,domxpath,Php,Xml,Xpath,Xml Parsing,Domxpath,我在XPath表达式中使用OR运算符(不止一次)在遇到特定字符串之前提取内容中所需的内容,例如“引用”、“获取更多信息”等。这些术语中的任何一个都应返回相同的结果,但它们的顺序可能不同。例如,“Reference”可能不是第一个,也可能根本不在内容中,并且其中一个匹配项使用了一个表“About the data”。我希望在这些字符串出现之前包含所有内容 任何帮助都将不胜感激 $expression= “//p[ 以(normalize-space(),“Reference”)或开头 以(norm

我在XPath表达式中使用OR运算符(不止一次)在遇到特定字符串之前提取内容中所需的内容,例如“引用”、“获取更多信息”等。这些术语中的任何一个都应返回相同的结果,但它们的顺序可能不同。例如,“Reference”可能不是第一个,也可能根本不在内容中,并且其中一个匹配项使用了一个表“About the data”。我希望在这些字符串出现之前包含所有内容

任何帮助都将不胜感激

$expression=
“//p[
以(normalize-space(),“Reference”)或开头
以(normalize-space(),“For more”开头)
]/前面的兄弟姐妹::p“;
这还需要考虑下表:

$expression=
“//article/table/tbody/tr/td[
以(normalize-space(),“关于使用的数据”开头)
]/前面的兄弟姐妹::p“;
下面是一个例子:

<root>
    <main>
        <article>
            <p>
                The stunning increase in homelessness announced in Los Angeles
                this week — up 16% over last year citywide — was an almost an
                incomprehensible conundrum.
            </p>
            <p>
                "We cannot let a set of difficult numbers discourage us
                or weaken our resolve" Garcetti said.
            </p>
            <p>
                References
                By Jeremy Herb, Caroline Kelly and Manu Raju, CNN
            </p>
            <p>
                For more information: Maeve Reston, CNN
            </p>
            <p>Maeve Reston, CNN</p>
            <table>
                <tbody>
                    <tr>
                        <td>
                            <strong>About the data used</strong>
                        </td>
                    </tr>
                    <tr>
                        <td>From
                        </td>
                        <td>Washington, CNN</td>
                    </tr>
                </tbody>
            </table>
        </article>
    </main>
</root>


洛杉矶宣布无家可归人数惊人增加
本周——比去年全市增长16%——几乎是一个好消息
难以理解的难题。

“我们不能让一系列困难的数字让我们气馁 或者削弱我们的决心”加塞蒂说。

工具书类 杰里米·赫伯、卡罗琳·凯利和曼努·拉朱,CNN

更多信息:美国有线电视新闻网梅夫·莱斯顿

梅夫·莱斯顿,美国有线电视新闻网

关于使用的数据 从…起 华盛顿,CNN
我期待的结果如下


洛杉矶宣布无家可归人数惊人增加
本周——比去年全市增长16%——几乎是一个好消息
难以理解的难题。

“我们不能让一系列困难的数字让我们气馁 或者削弱我们的决心”加塞蒂说。

我希望在这些字符串中的任何一个出现之前包含所有内容

也就是说,您希望第一段之前的内容包含以下字符串之一

包含这些字符串之一的段落包括:

p[starts-with(normalize-space(), 'References') or starts-with(....)]
第一段是

p[starts-with(normalize-space(), 'References') or starts-with(....)][1]
在此之前的段落是:

p[starts-with(normalize-space(), 'References') or starts-with(....)][1]
/preceding-sibling::p
在2.0中,我可能会使用正则表达式:

p[matches(., '^\s*(References|For more information)')]

为了避免重复调用normalize-space()。

我得到了您期望的段落以及开始引用的段落
References