Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Verificare se una parola è all'interno di un tag! x esperti :)

    Ciao,
    ho la necessita di verificare se una parola è all'interno di un tag <a href....


    Non posso usare le RegExp... e sono leggermente bloccato... non ho idea da dove iniziare ^^

    Io ho una stringa tipo: "ieri <a hre="...">pippo</a> è andato al <a hre="...">mare</a> e aveva caldo.

    Come faccio per capire se pippo, mare e caldo sono all'interno di un tag "a"


    Grazie a chi mi sappia rispondere!!

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Se all'interno della stringa l'href fosse uno solo, potresti usare una cosa del genere:

    codice:
    stringa = "ieri pippo."
    pos_href = instr(stringa, "href")
    pos_a = instr(stringa, "</a>")
    
    new_stringa = mid(stringa,pos_href,pos_a)
    if instr(new_stringa,"pippo") then
    	response.Write "C'è"
    else
    	response.Write "Non c'è"
    end if
    Se sono di più è più complesso.
    Ma perché senza RegExp?

    Roby

  3. #3
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    Prima verifichi se la tale stringa è presente nel testo usando InStr(testo,stringa).

    InStr ritorna uno zero se la stringa non c'è, altrimenti ti ritorna la posizione della stringa nel testo,
    che useremo per capire se è linkata oppure no (funzione Linkata).
    codice:
      stringa="xyz"
      if Instr(testoConLink,stringa)<>0 then
         response.write ("la stringa è presente")
    	 if Linkata(testoConLink,InStr(testoConLink,stringa) then
    	   response.write ("ed è linkata
    ")
    	else
    	   response.write ("e non è linkata
    ")
    	end if
      else
         response.write ("la stringa NON è presente
    ")
      end if
    A questo punto verifichi se nel testo, in una posizione successiva a quella in cui si trova la stringa, c'è un tag "link chiuso".

    Se non c'è siamo a posto: la stringa non è linkata.

    Se c'è siamo sicuri che InStr ha trovato la prima ricorrenza del tag chiuso;
    ora dobbiamo verificare se nel testo, tra la stringa e il tag "link chiuso", c'è un tag "link aperto".

    Se c'è, significa che il tag "link chiuso" si riferisce ad un'altra stringa.

    Se non c'è significa che il tag viene aperto prima della nostra stringa che, di conseguenza, è linkata.

    codice:
    function Linkata(TestoCompleto,posStringa)
      dim trovaFineLink, trovaInizioLink
      Linkata=False
      ' se nel TestoCompleto non c'è nessun </a> dopo la stringa, allora non è linkata
      trovaFineLink=InStr(posStringa, TestoCompleto,"</a>")
      if trovaFineLink=0 then exit function
      ' se invece ce n'è uno, l'unico caso in cui la stringa può essere linkata è che non ci sia un "<a href" tra
      ' la stringa e il "</a>" che abbiamo trovato
      trovaInizioLink=InStr(mid(TestoCompleto,posStringa,trovaFineLink-posStringa),"<a href")
      ' se non ce n'è neanche uno significa che la stringa è linkata
      if trovaInizioLink=0 then Linkata=True
    end function

    ed ora la notizia più bella:


















    SPERIAMO CHE FUNZIONI !!!

  4. #4
    Ciao, ti ringrazio dell'aiuto.

    Purtroppo avevo già risolto in maniera moooooolto simile...

    Solo che è un procedura lunghissima per farlo per tutto il testo e per tutte le parole :/

    Grazie ancora!!

  5. #5
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    lunghissima why? pecchè?
    basta un do while... senza il minimo redirect & co..

    vabbè

    (non mi ero accorto della tua risposta e ti ho mandato un pm...)

  6. #6
    Originariamente inviato da Robycz
    lunghissima why? pecchè?
    basta un do while... senza il minimo redirect & co..

    vabbè

    (non mi ero accorto della tua risposta e ti ho mandato un pm...)
    Ecco come ho fatto:

    If Instr(descri2,Rs2("nome")) > 0 Then
    'nella stringa è prensete un nome che potrebbe essere sostituito

    var_tempo = Mid(descri2,1,Instr(descri2,Rs2("nome"))-1)
    'memorizo la prima parte
    descri2 = Mid(descri2,Instr(descri2,Rs2("nome")))
    'memorizzo la parte rimasta da analizzare
    descri_finita = descri_finita&var_tempo
    'memorizzo la stringa finale


    If (Instr(descri2,"</a>") = 0) OR (Instr(descri2,"</a>") > 0 AND Instr(descri2,"<a") <> 0 AND Instr(descri2,"<a") < Instr(descri2,"</a>")) Then

    tempo = descri_finita&Rs2("nome")
    descri2 = Replace(descri,tempo,"")
    descri_finita = descri_finita&""&Rs2("nome")&""
    'descri_finita = descri_finita&mid(descri,tempo)

    'qui dovrei spostare l'esame della stringa alla parte successiva della varibiabile.... (ho avuto problemi e mi sono arreso)

    Conn.Execute("UPDATE articoli SET descrizione = '"&Replace(descri_finita&descri2,"'","''")&"' WHERE id_articolo = "&Rs("id_articolo"))
    Rs.Close
    Set Rs = Nothing
    Rs2.Close
    Set Rs2 = Nothing
    Conn.Close
    Set Conn = Nothing
    response.Redirect("crea_link2.asp?id="&Request("id ")&"")

    Else
    tempo = descri_finita&Rs2("nome")
    descri_finita = descri_finita&Rs2("nome")
    descri2 = Replace(descri,tempo,"")

    End If
    Else
    descri_finita = descri_finita&descri2
    ok = "si"
    End If


    Considera che il tutto è dentro un ulteriore ciclo che fa il check delle parole!

  7. #7

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.