30. november 2005 - 17:52
Der er
13 kommentarer og 1 løsning
finde html-elementer
Jeg prøver noget i retningen af: $file_contents = preg_replace('/<(\/?(h1|h2|h3|h4|p|td|div|html|head|meta)[^>]*?)>/i', '<span class="html_key">$0</span>"', $file_contents); Det jeg gerne ville opnå var at de opstillede html-nøgler (hmtl, head, meta, etc.) fik smidt en span rundt om der giver den en style, og ikke deres lesser-than og greater-than tegn, samt det indhold der nu måtte stå inde i hele tagget. Hvordan klarer man lige den?
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
01. december 2005 - 12:09
#1
Sæt <> ind !-) preg_replace('/<(\/?(h1|h2|h3|h4|p|td|div|html|head|meta)[^>]*?)>/i', '<span class="html_key">$0</span>"', $file_contents);
01. december 2005 - 15:45
#2
Den virker som sådan fint nok, den sætter bare <span>'en rundt om for meget. Der er tale om htmlentities'ed HTML: $file_name = 'test.php'; $file_handler = fopen($file_name, 'r'); $file_contents = fread($file_handler, filesize($file_name)); fclose($file_handler); $file_contents = htmlentities($file_contents); $file_contents = str_replace("\t", "  ", $file_contents); $file_contents = str_replace("\n", "<br />", $file_contents); $file_contents = preg_replace('/<(\/?(h1|h2|h3|h4|p|td|div|html|head|meta)[^>]*?)>/i', '<span class="html_key">$0</span>"', $file_contents); return $file_contents;
01. december 2005 - 15:48
#4
Argh, du skal også bruge $1, for i de sprog, der understøtter variabel 0, er det hele den matchede streng !-)
01. december 2005 - 15:54
#5
Mede $1 får jeg nogenlunde samme resultat, bare uden < og >
01. december 2005 - 15:58
#6
Vil du kun have selve tag-navnet ?-) -- så skal du nok fjerne de yderste paranteser !-) preg_replace('/<\/?(h1|h2|h3|h4|p|td|div|html|head|meta)[^>]*?>/i',
01. december 2005 - 16:00
#7
Ja det hjælper med, men den må ikke fjerne taggets parameteres: $file_name = 'test.php'; $file_handler = fopen($file_name, 'r'); $file_contents = fread($file_handler, filesize($file_name)); fclose($file_handler); $file_contents = htmlentities($file_contents); $file_contents = str_replace("\t", "  ", $file_contents); $file_contents = str_replace("\n", "<br />", $file_contents); $file_contents = preg_replace('/<\/?(h1|h2|h3|h4|p|td|div|html|head|meta)[^>]*?>/i', '<<span class="html_key">$1</span>>', $file_contents); return $file_contents;
01. december 2005 - 16:01
#8
Så: $file_contents = preg_replace('/<\/?(h1|h2|h3|h4|p|td|div|html|head|meta)([^>]*?)>/i', '<<span class="html_key">$1</span>$2>', $file_contents);
01. december 2005 - 16:05
#9
Ah det er jo perfekt! Kan du en smart ting så lukkede tags, fx </title> ikke bliver byttet ud med <title> ?
01. december 2005 - 16:10
#10
Tjah, du kan lave en ny gruppe med det tegn alene eller inkludere det i matchet: preg_replace('/<(\/?)(h1|h2|h3|h4|p|td|div|html|head|meta)([^>]*?)>/i', '<<span class="html_key">$1$2</span>$3>', $file_contents); eller: preg_replace('/<(\/?(h1|h2|h3|h4|p|td|div|html|head|meta))([^>]*?)>/i', '<<span class="html_key">$1</span>$3>', $file_contents); -- den sidste konstruktion har jeg aldrig selv testet !-)
01. december 2005 - 16:14
#11
Jeg brugte dit første bud.. Det virker fortræffeligt! Mere kan jeg ikke bede om - bortset fra et svar :)
01. december 2005 - 16:16
#12
Velbekomme '-)
01. december 2005 - 16:19
#13
Mange tak for din hjælp - nu begynde det også hjælpe på min reg expr. forståen :)
01. december 2005 - 16:25
#14
-- og jeg takker for point ;~}
Kurser inden for grundlæggende programmering