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 fra Computerworld
AI-agenterne kommer vrimlende
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
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