2010-12-14 9 views
5

Zazwyczaj jeśli zawierają w pliku foo.m, komentarz w postaci:Jak sprawić, aby program Matlab wyświetlał poprawnie linki do stron internetowych w poszukiwaniu dziwnych adresów URL?

% See also: <a href="http://en.wikipedia.org/etc">link name</a> 

link pojawia się w pomocy darce, tj w Matlab, ja wydać

>> help foo 

i ja coś jak

Zobacz także: link name

jak dotąd tak dobrze. Istnieją jednak adresy internetowe zawierające zabawne znaki, na przykład:

% See also: <a href="http://en.wikipedia.org/wiki/Kernel_(statistics)">http://en.wikipedia.org/wiki/Kernel_(statistics)</a> 

Program Matlab nie renderuje tego poprawnie w przeglądarce pomocy. Kiedy wyświetlenia pomocy, wygląda to tak:

Patrz także: statistics) "> http://en.wikipedia.org/wiki/Kernel_ (statistics)

gdzie odnośnik jest do lokalnego katalogu o nazwie „statystyka”. próbowałem wszystkie rodzaje ucieczek cytując i ukośniki, ale nie może uzyskać przeglądarkę pomocy, aby działać poprawnie.

Odpowiedz

4

URL uciec zabawne postacie z kodów znakowych.

function foo 
%FOO Function with funny help links 
% 
% Link to <a href="http://en.wikipedia.org/wiki/Kernel_%28statistics%29">some page</a>. 

Funkcja urlencode() Matlab pokaże Ci, jakich kodów użyć. Ale zachowaj okrężnicę i tnij tak, jak jest.

>> disp(urlencode('Kernel_(statistics)')) 
Kernel_%28statistics%29 

Oto funkcja, która będzie podawać elementy ścieżki URL, zachowując części, które należy pozostawić nienaruszone.

function escapedUrl = escape_url_for_helptext(url) 

ixColon = find(url == ':', 1); 
if isempty(ixColon) 
    [proto,rest] = deal('', url); 
else 
    [proto,rest] = deal(url(1:ixColon), url(ixColon+1:end)); 
end 

parts = regexp(rest, '/', 'split'); 
encodedParts = cellfun(@urlencode, parts, 'UniformOutput', false); 
escapedUrl = [proto join(encodedParts, '/')]; 

function out = join(strs, glue) 

strs(1:end-1) = strcat(strs(1:end-1), {glue}); 
out = cat(2, strs{:}); 

Aby z niego skorzystać, wystarczy podać cały adres URL.

>> escape_url_for_helptext('http://en.wikipedia.org/wiki/Kernel_(statistics)') 
ans = 
http://en.wikipedia.org/wiki/Kernel_%28statistics%29 
+0

Dla kompletności, muszę również uciec w tekście łącza: '% Zobacz także: http://en.wikipedia.org/wiki/Kernel_%28statistics%29'. Jeśli mam Kernel_ (statystyki) wewnątrz pary '', Matlab nie renderuje jej poprawnie. Dzięki za połów, klepię się po głowie, bo tego nie widziałem. – shabbychef

Powiązane problemy