2017-11-01 11 views
0

コード:どのように私は、XMLデータからHTMLのコメントタグを削除することができます

$string = htmlspecialchars($vakanz["stellenbeschrieb"]); 
echo $string; 

出力:

データは、私は次のコードでコンテンツを取得するウェブアプリケーションから来
<!-- Haushalthilfe, stundenweise<br /> <br /> Fensterreinigungen und Fr&uuml;hjahrsputz<br /> --> 

function getVakanzDetail() 
{ 
    $vakanzId = $_GET['nummer']; 
    $apiUrl = getApiUrl('vakanzDetail'); 
    $rawXml = file_get_contents($apiUrl . $vakanzId); 
    $xmlElement = simplexml_load_string($rawXml, "SimpleXMLElement", LIBXML_NOCDATA); 
    $json = json_encode($xmlElement); 
    $data = json_decode($json, true); 

    $vakanz = $data['vakanz']; 

    foreach ($vakanz as $key => $value) { 
     if ($value === []) { 
      $vakanz[$key] = ''; 
     } 
    } 

    return $vakanz; 
} 

xmlを直接見ると、この出力が得られるフィールドが正確にこの情報を持っていることがわかりますde。

<stellenbeschrieb> 
    <!-- Haushalthilfe, stundenweise<br /> <br /> Fensterreinigungen und Fr&uuml;hjahrsputz<br /> --> 
</stellenbeschrieb> 

私の質問は:どのように私は、HTMLタグなしで、このような出力を得るために、これを変更することができます。 Haushalthilfe、 FensterreinigungenウントFrühjahrsputzに

+0

また、改行タグも削除したいですか? – Shrugo

+0

ブレークタグは、ブレークするとそこにとどまることができます。しかし、現時点では彼らはテキストとして出力されています。 –

答えて

0

をstundenweiseは、XML列に以下のロジックを適用することができますあなたは外部ソースから取得します。

var commenttag = "<!-- Haushalthilfe, stundenweise<br /> <br /> Fensterreinigungen und Fr&uuml;hjahrsputz<br /> -->"; 
 

 
var newtext = commenttag.replace(/<!--/g,"").replace(/<br\s*[\/]?>/g,"").replace(/-->/g,""); 
 

 
console.log(newtext);

0

、このいずれかを試してみてください。

function remove($str){ 
    $str = str_replace("<!--", "",$str); 
    $str = str_replace("-->", "",$str); 
    return $str; 
} 
$str = "<!-- Haushalthilfe, stundenweise<br /> <br /> Fensterreinigungen und Fr&uuml;hjahrsputz<br /> -->"; 
echo strip_tags(remove($str)); 

この単純機能remove()は、開始および終了コメントを削除します。

strip_tags()すべてのhtmlタグを文字列から削除します。

remove()機能を追加した後、このコードを試してください。

echo strip_tags(remove($vakanz["stellenbeschrieb"]));

0

のSimpleXMLはDOMの上に抽象化しているが、いくつかのケースでは、あなたは下のレベルに移動する必要があります。 DOMには、ノード、要素、空白、そしてこの場合重要なコメントがあります。だから、コメントノードを取り出すために、XPathを使用することができます。

$document = new DOMDocument(); 
$document->loadXml($xml); 
$xpath = new DOMXpath($document); 

foreach ($xpath->evaluate('//stellenbeschrieb/comment()') as $comment) { 
    var_dump($comment->textContent); 
} 

出力:

string(90) " Haushalthilfe, stundenweise<br /> <br /> Fensterreinigungen und Fr&uuml;hjahrsputz<br /> " 

は、コメント内のテキストは、HTMLの断片です。あなたは二DOMにそれをロードする場合は、デフォルトでhtmlbodyタグが追加されますが、それは単にテキストを取得することが容易になります - タグなしと復号化されたHTMLエンティティを持つ:

$document = new DOMDocument(); 
$document->loadXml($xml); 
$xpath = new DOMXpath($document); 

foreach ($xpath->evaluate('//stellenbeschrieb/comment()') as $comment) { 

    $htmlDocument = new DOMDocument(); 
    $htmlDocument->loadHtml($comment->textContent); 
    $htmlXpath = new DOMXpath($htmlDocument); 

    var_dump($htmlXpath->evaluate('string(//body)')); 
} 

出力:

string(65) "Haushalthilfe, stundenweise Fensterreinigungen und Frühjahrsputz" 
関連する問題