Php 使用SimpleXML解析内联标记

Php 使用SimpleXML解析内联标记,php,xml,parsing,xml-parsing,simplexml,Php,Xml,Parsing,Xml Parsing,Simplexml,我使用SimpleXML和PHP以以下形式解析XML元素: <element> random text with <inlinetag src="http://url.com/">inline</inlinetag> XML to parse </element> 要解析的带有内联XML的随机文本 我知道我可以使用$element->inlinetag访问inlinetag,但我不知道如何访问它,基本上我可以用指向属性源的链接替换inline

我使用SimpleXML和PHP以以下形式解析XML元素:

<element>
random text with <inlinetag src="http://url.com/">inline</inlinetag> XML to parse
</element>

要解析的带有内联XML的随机文本
我知道我可以使用$element->inlinetag访问inlinetag,但我不知道如何访问它,基本上我可以用指向属性源的链接替换inlinetag,而不使用它在文本中的位置。结果基本上是这样的:

here is a random text with <a href="http://url.com/">inline</a> XML
这里是一个带有XML的随机文本

这可能是一个愚蠢的问题,我希望这里有人能帮忙!:)

这就是你想要达到的结果吗

<?php
$data = '<element>
random text with 
<inlinetag src="http://url.com/">inline
</inlinetag> XML to parse
</element>';

$xml = simplexml_load_string($data);

foreach($xml->inlinetag as $resource)
{
    echo 'Your SRC attribute = '. $resource->attributes()->src; // e.g. name, price, symbol
}
?>

这就是您想要达到的结果吗

<?php
$data = '<element>
random text with 
<inlinetag src="http://url.com/">inline
</inlinetag> XML to parse
</element>';

$xml = simplexml_load_string($data);

foreach($xml->inlinetag as $resource)
{
    echo 'Your SRC attribute = '. $resource->attributes()->src; // e.g. name, price, symbol
}
?>

我找到了一种使用DomeElement的方法

替换元素的一种方法是使用不同的名称/属性克隆它。下面是一种方法,使用上给出的公认答案

现在,我们使用此函数克隆具有新元素和属性名的内联元素。棘手的部分来了:在所有节点上迭代将无法按预期工作。克隆选定节点时,删除原始节点时,选定节点的长度将发生变化。因此,我们只选择第一个元素,直到没有要克隆的元素为止

$xml = '<element>
        random text with <inlinetag src="http://url.com/">inline</inlinetag> XML to parse
    </element>';
$dom = new DOMDocument;
$dom->loadXML($xml);
$nodes= $dom->getElementsByTagName('inlinetag');
echo $dom->saveXML(); //<element>random text with <inlinetag src="http://url.com/">inline</inlinetag> XML to parse</element>
while($nodes->length > 0) {
    clonishNode($nodes->item(0), 'a', ['src' => 'href']);
}
echo $dom->saveXML(); //<element>random text with <a href="http://url.com/">inline</a> XML to parse</element>
$xml='1!'
要解析的带有内联XML的随机文本
';
$dom=新的DOMDocument;
$dom->loadXML($xml);
$nodes=$dom->getElementsByTagName('inlinetag');
echo$dom->saveXML()//要解析的带有内联XML的随机文本
而($nodes->length>0){
clonishNode($nodes->item(0),'a',['src'=>'href']);
}
echo$dom->saveXML()//要解析的带有XML的随机文本

就这样!剩下要做的就是获取元素标记的内容。

我找到了一种使用DomeElement的方法

替换元素的一种方法是使用不同的名称/属性克隆它。下面是一种方法,使用上给出的公认答案

现在,我们使用此函数克隆具有新元素和属性名的内联元素。棘手的部分来了:在所有节点上迭代将无法按预期工作。克隆选定节点时,删除原始节点时,选定节点的长度将发生变化。因此,我们只选择第一个元素,直到没有要克隆的元素为止

$xml = '<element>
        random text with <inlinetag src="http://url.com/">inline</inlinetag> XML to parse
    </element>';
$dom = new DOMDocument;
$dom->loadXML($xml);
$nodes= $dom->getElementsByTagName('inlinetag');
echo $dom->saveXML(); //<element>random text with <inlinetag src="http://url.com/">inline</inlinetag> XML to parse</element>
while($nodes->length > 0) {
    clonishNode($nodes->item(0), 'a', ['src' => 'href']);
}
echo $dom->saveXML(); //<element>random text with <a href="http://url.com/">inline</a> XML to parse</element>
$xml='1!'
要解析的带有内联XML的随机文本
';
$dom=新的DOMDocument;
$dom->loadXML($xml);
$nodes=$dom->getElementsByTagName('inlinetag');
echo$dom->saveXML()//要解析的带有内联XML的随机文本
而($nodes->length>0){
clonishNode($nodes->item(0),'a',['src'=>'href']);
}
echo$dom->saveXML()//要解析的带有XML的随机文本

就这样!剩下要做的就是获取元素标记的内容。

我不确定是否正确理解了您要做的事情。你能添加一个例子吗?你想用
替换
inline
,其中
link
等于源属性吗?是的,没错,也编辑了这篇文章。我不确定我是否正确理解了你的意图。你能添加一个例子吗?你想用
替换
inline
,其中
link
等于源属性吗?是的,没错,也编辑了这篇文章。看不,我知道如何访问inlinetag及其属性,但我的问题是知道inlinetag元素在随机文本中的位置。(因此在哪里放置“rel=”nofollow noreferrer“>url.com/”>内联)不,我知道如何访问inlinetag及其属性,但我的问题是知道inlinetag元素在随机文本中的位置。(那么“rel=”nofollow noreferrer“>url.com/”>内联放在哪里呢)