2011-01-23 7 views
11

नीचे दिया गया कोड अक्षरों वाले अक्षरों के लिए पाठ को परिवर्तित करता है। लेकिन यह उन HTML टैग्स को भी परिवर्तित करता है जिन्हें मैं बरकरार रखना चाहता हूं। मैं केवल उच्चारण वर्णों को कैसे परिवर्तित कर सकता हूं और अन्य सभी विशेष पात्रों को बरकरार रख सकता हूं? धन्यवाद।एक्सेंट को एचटीएमएल में कनवर्ट करें, लेकिन टैग को अनदेखा करें

$temp = file_get_contents("file.html"); 
echo htmlentities($temp,ENT_NOQUOTES,'UTF-8'); 

उत्तर

21

htmlspecialchars() और htmlspecialchars_decode() केवल सांकेतिक शब्दों में बदलना होगा/डिकोड &, <, >, ' और "; आप इस प्रकार उनकी संस्थाओं अपने HTML विशेष वर्ण को वापस परिवर्तित करने के लिए बाद के इस्तेमाल कर सकते हैं:

echo htmlspecialchars_decode(htmlentities($temp, ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES); 
+0

यह भी है जब एक एक पृष्ठ पर दोनों इनकोडिंग और सादे संस्थाओं उपयोग किया जाता है काम करता है काम करने के लिए लगता है (जैसे: दोनों '<' और '<')। कनवर्ट करने और तुरंत बैक-कनवर्ट करने का जोखिम यह है कि, कुछ मामलों में, मूल पाठ के कुछ हिस्सों को अनजाने में खो दिया जा सकता है। इस मामले में, '<' '< 'में बदल जाएगा और फिर ** मूल पाठ में' < 'के सभी अवसरों सहित' < '** के सभी अवसरों को फिर से <<' में परिवर्तित कर दिया जाएगा। हालांकि, यह मामला नहीं है, क्योंकि इकाई डिलीमीटर 'और' स्वयं भी परिवर्तित हो जाता है! तो आपको पाठ के अनपेक्षित रूपांतरण के बारे में चिंता करने की ज़रूरत नहीं है। बहुत स्पष्ट लगता है, लेकिन मैं बस याद दिलाना। –

+1

उत्कृष्ट समाधान, धन्यवाद – Codex73

1

एक लेकिन एक हैक की है, लेकिन आप htmlentities() आवेदन कर सकते हैं जैसे आप पहले से ही यह पहली बार नहीं है, और उसके बाद मानक एक्सएमएल के लिए यह रिवर्स वर्ण (<, >, &, ", ') htmlspecialchars_decode() का उपयोग कर। यह टैग बहाल करेगा।

0

यह ठीक

if (!function_exists('make_accents')): 
function make_accents($string) 
{ 
    //$string = "<p>Angoulême</p>"; 
    $trans = get_html_translation_table(HTML_ENTITIES); 
    //$encoded = "&lt;p&gt;Angoul&ecirc;me&lt;/p&gt;"; 
    $encoded = strtr($string, $trans); 
    //Next two lines put back the < & > tags 
     $noHTML = str_replace("&lt;", "<", $encoded); 
    $encoded = str_replace("&gt;", ">", $noHTML); 
    return $encoded; 
} 
endif; 
+0

मेरे मामले में, get_html_translation_table (HTML_ENTITIES); strtr ($ स्ट्रिंग, $ ट्रांस); मेरी सामग्री के प्रत्यक्ष आउटपुट करने के लिए पर्याप्त था। – Muffun

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