ZadanieWymień wszystkie przestrzenie w treści każdej z tagiem ``
Wymień wszystkie przestrzenie w treści każdej tag
.
y.html (przykładowy plik)
<p class=MsoNormal style='margin-top:1.0pt;margin-right:0cm;margin-bottom:1.0pt;
margin-left:34.0pt;text-indent:-19.8pt'><span lang=NL-BE style='font-size:10.0pt;
font-family:Symbol;color:black;mso-ansi-language:NL-BE'>·</span><span
class=GramE><span style='font-size:7.0pt;color:black'>
</span><span style='font-size:10.0pt;font-family:Arial;color:black'>Kit</span></span><span
style='font-size:10.0pt;font-family:Arial;color:black'> </span><span
class=SpellE><i><span style='font-size:10.0pt;font-family:Arial'>Strongyloides</span></i></span><i><span
style='font-size:10.0pt;font-family:Arial'> <span class=SpellE>ratti</span></span></i><span
style='font-size:10.0pt;font-family:Arial'> (nr. 9450) van <span class=SpellE>Bordier</span>
Affinity Products. </span><span lang=NL-BE style='font-size:10.0pt;font-family:
Arial;mso-ansi-language:NL-BE'>Zie bijsluiter in bijlage: CLKB_B_0306. Te
bewaren bij 2 – 8 °C tot vervaldatum.</span><span lang=NL-BE style='mso-ansi-language:
NL-BE'><o:p></o:p></span></p>
Co próbowałem
#!/usr/bin/perl
use strict;
use warnings;
use Mojo::DOM;
open (my $fh, "<", "y.html") or die $!;
my $dom = Mojo::DOM->new(do{local $/ = undef; <$fh>});
$dom->find("*")->each(sub { $_->content($_->content =~ s/\s/\ /gr) });
print $dom;
wynika z wyżej skrypcie
<p class="MsoNormal" style="margin-top:1.0pt;margin-right:0cm;margin-bottom:1.0pt;
margin-left:34.0pt;text-indent:-19.8pt"><span lang="nl-be" style="font-size:10.0pt; font-family:symbol;color:black;mso-ansi-language:nl-be">·<span class="grame"><span style="font-s
ize:7.0pt;color:black"> <span style="font-size:10.0pt;font-family:arial;color:black">Kit<span style="font-size:10.0pt;font-family:arial;color:black"> <span class="spelle"><i><span&nb
sp;style="font-size:10.0pt;font-family:arial">Strongyloides<i><span style="font-size:10.0pt;font-family:arial"> <span class="spelle">ratti<span style="font-size:10.0pt;font-family:arial"> (n
r. 9450) van <span class="spelle">Bordier Affinity Products. <span lang="nl-be" style="font-size:10.0pt;font-family: arial;mso-ansi-language:nl-be">Zie bijsluiter in bijlage: CLKB_B_030
6. Te bewaren bij 2 – 8 °C tot vervaldatum.<span lang="nl-be" style="mso-ansi-language: nl-be"><o:p></o:p></span lang="nl-be" style="mso-ansi-language: nl-be"></span lang
="nl-be" style="font-size:10.0pt;font-family: arial;mso-ansi-language:nl-be"></span class="spelle"></span style="font-size:10.0pt;font-family:arial"></span class="spelle"></span&nb
sp;style="font-size:10.0pt;font-family:arial"></i></span style="font-size:10.0pt;font-family:arial"></i></span class="spelle"></span style="font-size:10.0pt;font-family:arial;color:black"></
span style="font-size:10.0pt;font-family:arial;color:black"></span style="font-size:7.0pt;color:black"></span class="grame"></span lang="nl-be" style="font-size:10.0pt; font-f
amily:symbol;color:black;mso-ansi-language:nl-be"></p>
Nie otrzymuję pożądanego wyniku, dodaje się również tag
(np. </span
), chcę, żeby to było zrobione tylko w treści.
PS: Próbowałem go z Mojo::DOM
, ale nie trzeba go używać, możesz wypróbować dowolny inny analizator składni, jeśli chcesz, nadal chciałbym wiedzieć, co jest nie tak z moim kodem?
Dzięki, że działa poprawnie. Czy nie można go rozwiązać za pomocą Mojo :: DOM? –
wiesz, jak bardzo doceniam 'Mojo :: DOM', ale nie sądzę, że to odpowiednie narzędzie do pracy. Jeśli jednak chciałbyś zastąpić tylko sekcję drzewa DOM, prawdopodobnie poleciłbym użyć Mojo :: DOM do przechodzenia i znajdowania właściwej gałęzi, a następnie użycie 'HTML :: TokeParser' do zastąpienia spacji w tej gałęzi używając '-> content", tak jak początkowo próbowałeś. – Miller
Wiem, to samo tutaj :). Wiedziałem też, że będziesz pierwszym, który odpowie na to pytanie;) jesteś bardzo aktywny! Tak, to także sposób na zrobienie tego. W każdym razie użyłem twojego podejścia używając 'HTML :: TokeParser' i wykonałem zadanie. Miłego dnia! –