2017-06-23 7 views
-1

Ich habe rund herum gesucht und ich bin mir nicht sicher, wie das wirklich funktioniert.PHP echo Inhalt von <tags>

Ich habe die Tags

<taghere>content</taghere> 

und ich möchte den „Inhalt“ ziehen, so dass ich eine IFSTATEMENT setzen kann, je nachdem, was der „Inhalt“ ist als „Inhalt“ wird varrying auf der Seite je

dh

<taghere>HelloWorld</taghere> 

$content = //function that returns the text between <taghere> and </taghere> 


if($content == "HelloWorld") 
{ 
    //execute function; 
} 
else if($content =="Bonjour") 
{ 
    //execute seperate function 
} 

versuchte ich preg verwenden, aber es scheint nicht zu funktionieren und gibt nur was Wert in der Feldlinien ist anstelle des Gebens mir tatsächlich die Informationen innerhalb th e-Tags

+0

denken Wo Sie $ content gesetzt haben? –

+0

Entschuldigung, ich habe ein bisschen mehr hinzugefügt, aber das Problem, das ich habe, ist -how- um den $ Inhalt zu bekommen, was zwischen den beiden Tags ist. – nidh0gg

+0

Ja, aber wo ist dieser Inhalt? Wird es von einem XML-Feed gelesen? Von einer Webseite, die Sie durchsuchen? – gview

Antwort

1

können Sie DomDocument und loadXML, dies zu tun

<?php 
function doAction($word=""){ 
$html="<taghere>$word</taghere>"; 
$doc = new DOMDocument(); 
$doc->loadXML($html); 
//discard white space 
$hTwo= $doc->getElementsByTagName('taghere'); // here u use your desired tag 
if($hTwo->item(0)->nodeValue== "HelloWorld") 
{ 
    echo "1"; 
} 
else if($hTwo->item(0)->nodeValue== "Bonjour") 
{ 
    echo "2"; 
    //execute seperate function 
} 
} 
doAction($word="Bonjour"); 
+0

einzufügen ist es eine Möglichkeit, es zu machen, so dass, wenn Hello World Bonjour es 2 echo es statt 1? – nidh0gg

+0

wird statt mit ist, den Wert von $ html zu ändern versuchen, es Ihnen jetzt tun wird, so – Osama

+0

sory ich verstehe und Ich mache es in dem, was Sie wollen – Osama

2

Wenn ich Ihre Frage richtig verstehe, möchten Sie die Daten INSIDE das Tag "taghier".

Wenn Sie HTML parsen, sollten Sie DOMDocument

verwenden etwas Ähnliches wie diese versuchen:

<?php 

// Assuming your content (the html where those tags are found) is available as $html 

$doc = new DOMDocument(); 
libxml_use_internal_errors(true); 
$doc->loadHTML($html); // loads your HTML 
libxml_clear_errors(); 

// Note: Tag names are case sensitive 

$text = $dom->getElementsByTagName('taghere'); 

// Echo the content 
echo $text 
+0

ich bekomme hier einen Fehler? [Schwerwiegender Fehler: Aufruf einer Memberfunktion getElementsByTagName() auf Null in /public_html/test.php in Zeile 47] Ich habe den Basisnamen ($ _ SERVER ['REQUEST_URI'] verwendet, um den aktuellen Dateinamen zu übernehmen und in $ html – nidh0gg

-1

Ich weiß nicht, was regex Sie versucht haben, und dafür nicht das, was falsch gewesen wäre. Könnte das Entkommen des <

<?php 
    if(preg_match('#\<taghere>(.*)\</taghere>#', $document, $a)){ 
      $content = $a[1]; 
    } 

?> 

ich nur ein

sein wird angenommen, haben
0

Sie es nicht so tun können. Technisch ist es möglich, aber es ist mehr als ein Overkill. Und Sie haben PHP mit HTML so vermischt, dass es nicht funktioniert.

die Sache zu erreichen, dass Sie sich so zu tun haben, etwas wollen:

$content = 'something'; 
if ($comtent === 'something') { 
    //do something 
} 
if ($content === 'something else') { 
    //do something else 
} 

echo '<tag>'. $content . '</tag>' ; 

Natürlich können Sie $content in der ifs ändern.

0

Vergessen Sie nicht, können Sie Allways eine ID in ein Tag hinzufügen, damit Sie es mit Java-Skript verweisen können.

<tag id='tagid'>blah blah blah </tag> 

<script> 
document.getElementById(tagid) 
</script> 

eine viel einfachere Art und Weise zu bekommen Dies könnte das sein, was Sie einige der anderen Antworten über dann