使用PHP和RegExp,我需要获取<rdf:li xml:lang="x-default">
和</rdf:li>
内部的值
所以我需要一个值的字符串中会有这行…
<rdf:li xml:lang="x-default">Yuengling Americas Oldest Brewery Huffmans Pub & Grub 60x30 5</rdf:li>
我需要将Yuengling Americas Oldest Brewery Huffmans Pub & Grub 60x30 5
放入一个PHP变量中。我对Regex不好,有人能帮我得到这个值吗?
$str = '<rdf:li xml:lang="x-default">Yuengling Americas Oldest Brewery Huffmans Pub & Grub 60x30 5</rdf:li>';
我的字符串来自于读取的内容。AI文件。。。。
%PDF-1.5
%âãÏÓ
1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[7 0 R]/Order 8 0 R/RBGroups[]>>/OCGs[7 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 67315/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:format>application/pdf</dc:format>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">Yuengling Americas Oldest Brewery Huffmans Pub & Grub 60x30 5</rdf:li>
</rdf:Alt>
</dc:title>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
<xmp:MetadataDate>2014-04-01T16:13-05:00</xmp:MetadataDate>
<xmp:ModifyDate>2014-04-01T16:13-05:00</xmp:ModifyDate>
<xmp:CreateDate>2014-04-01T16:13-05:00</xmp:CreateDate>
<xmp:CreatorTool>Adobe Illustrator CS6 (Windows)</xmp:CreatorTool>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">....
Jason,抛开所有保留意见不谈,因为您要求使用regex解决方案,所以这里有一个简单的regex,可以满足您的需求:
<rdf:li xml:lang="x-default">'K[^<]+(?=</rdf:li>)
如何使用:
$str = '<rdf:li xml:lang="x-default">Yuengling Americas Oldest Brewery Huffmans Pub & Grub 60x30 5</rdf:li>';
$regex = '~<rdf:li xml:lang="x-default">'K[^<]+(?=</rdf:li>)~';
if(preg_match($regex,$str,$m)) {
$myvariable = $m[0];
echo $myvariable."<br />";
}
输出:
Yuengling Americas Oldest Brewery Huffmans Pub & Grub 60x30 5
它是如何工作的
您会注意到,我们从匹配整个左侧分隔符开始。'K
然后告诉引擎从返回的匹配中修剪它。下一个[^<]+
匹配任何不是<
的字符,以吃掉您想要的文本。为了确保,在匹配之后,我们使用(?=
进行前瞻,以确保结束分隔符紧跟在匹配的字符串之后。