2013-11-20 11 views
7

का उपयोग करते समय प्रतिशत-एन्कोडिंग href विशेषताओं से बचें इस समस्या के लिए मुझे ढूंढने में सबसे अच्छे उत्तर XSLT का उपयोग कर रहे हैं, लेकिन मुझे यकीन नहीं है कि मेरी समस्या के उन उत्तरों को कैसे लागू किया जाए।PHP के DOMDocument

असल में, DOMDocument यूआरएल से बचने का एक अच्छा काम कर रहा है (href विशेषताओं में) जो कि पारित हो गए हैं, लेकिन मैं वास्तव में इसे एक टिग/डीजेगो शैली टेम्पलेट बनाने के लिए उपयोग कर रहा हूं, और मैं इसे अकेला छोड़ दूंगा । कौन सा आउटपुट निम्नलिखित

<?php 
$doc = new DOMDocument(); 
$doc->loadHTML('<html><body>Test<br><a href="{{variable}}"></a></body></html>'); 
echo $doc->saveHTML(); 

:

<html><body>Test<br><a href="%7B%7Bvariable%7D%7D"></a></body></html> 

यह करने के लिए नहीं प्रतिशत एन्कोड href विशेषता संभव है यहाँ एक विशिष्ट उदाहरण है, "समस्या" को दर्शाता हुआ?

यदि यह संभव नहीं है सीधे, क्या आप एक संक्षिप्त और विश्वसनीय कामकाज का सुझाव दे सकते हैं? मैं अन्य प्रसंस्करण कर रहा हूं, और DOMDocument उपयोग को रहना होगा। तो शायद एक पूर्व/पोस्ट प्रसंस्करण चाल?

+0

डोम किसी मौजूदा दस्तावेज़ जोड़ तोड़ के लिए महान है, लेकिन निर्माण के लिए ग्राउंड अप से एक नया दस्तावेज़, स्ट्रिंग ऑपरेशंस का उपयोग करना बेहतर होता है, खासकर जब आप "टेम्पलेट जो एचटीएमएल की तरह दिखते हैं" का निर्माण कर रहे हैं। –

+0

मैं वास्तव में एक मौजूदा दस्तावेज़ में हेरफेर कर रहा हूं। यह सबसे छोटा संभव नमूना कोड है जो स्पष्ट रूप से समस्या को सचित्र करता है। –

+0

अनिवार्य रूप से इस उदाहरण में उपयोग की जाने वाली स्ट्रिंग को 'file_get_contents() ', * उदाहरण के लिए * लोड किया गया होगा। –

उत्तर

2

मैं 'हैक'/वाहिनी-टेप समाधान के साथ खुश नहीं हूँ, लेकिन यह कैसे मैं वर्तमान में समस्या को सुलझाने कर रहा हूँ है:

function fix_template_variable_tokens($template_string) 
{ 
    $pattern = "/%7B%7B(\w+)%7D%7D/"; 
    $replacement = '{{$1}}'; 
    return preg_replace($pattern, $replacement, $template_string); 
} 

$html = $doc->saveHTML(); 
$html = fix_template_variable_tokens($html); 
+0

हाँ, लेकिन यह 'urldecode' समाधान से बेहतर है: डी – Epoc

संबंधित मुद्दे