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

    Cercare stringa in una stringa

    buondì.
    ho una funzione per troncare il testo dopo un tot di caratteri.
    però dovrei fare una cosa del genere: se il 300 carattere sta in un link (quindi tra <a e </a>) la lunghezza deve essere cambiata.
    ho provato così senza successo:
    Codice PHP:
    function troncaTesto($testo$caratteri 300) {
        if (
    strlen($testo) <= $caratteri) {
            return 
    $testo;
        }

        
    $ultimo substr($testo, -1);
        
    $preg preg_match("#<a(.*?)</a>"$ultimo);
        if (
    $preg 0) {
            
    $caratteri 250;
            echo 
    '<script type="text/javascript">alert("SI");</script>'// test
        
    }

        
    $nuovo wordwrap($testo$caratteri"|");
        
    $nuovotesto explode("|"$nuovo);
        return 
    $nuovotesto[0] . "...";

    ovviamente in $testo posso esserci più link, quindi nn posso controllare le occorrenze.
    dove sbaglio?

  2. #2
    perché senza successo? che errore ti dà?

    mi sembra piuttosto giusto (a parte che non hai chiuso il delimitatore # dentro preg_match)!!

  3. #3
    nessun errore, nn succede proprio nulla, come se nn entrasse nell' if ($preg > 0).
    Codice PHP:
    function troncaTesto($testo$caratteri 300) {
        if (
    strlen($testo) <= $caratteri) {
            return 
    $testo;
        }

        
    $ultimo substr($testo, -1);
        
    $preg preg_match("#<a(.*?)</a>#"$ultimo);
        if (
    $preg 0) {
            
    $caratteri 500;
            echo 
    '<script type="text/javascript">alert("SI");</script>';
        }

        
    $nuovo wordwrap($testo$caratteri"|");
        
    $nuovotesto explode("|"$nuovo);
        return 
    $nuovotesto[0] . "...";


  4. #4
    provato a stampare $preg ?

    dice sempre 0 anche quando volutamente metti altro?

    Ah, per intenderci, se trova quello che metti tu come pattern mette 0, mette 1 se trova caratteri esclusi dall'espressione regolare temo.

    (uso un'espressione diversa ma funziona in questo modo)

  5. #5
    prova così:
    Codice PHP:
        $preg preg_match("#<a(.*?)</a>#i", [COLOR=red]$testo[/COLOR] ); //i=case insensitive e poi $testo non $ultimo 

    senza i come modificatore se anziché <a...</a> c'è <A...</A> non lo trova

    @gokiu no mette 0 se non trova il pattern... 1 se lo trova

  6. #6
    ok ho fatto le vostre modifiche:
    Codice PHP:
    function troncaTesto($testo$caratteri 300) {
        if (
    strlen($testo) <= $caratteri) {
            return 
    $testo;
        }

        
    $ultimo substr($testo, -1);
        
    $preg preg_match("#<a(.*?)</a>#i"$ultimo);
        echo 
    '<script type="text/javascript">alert("' $preg '");</script>';
        if (
    $preg 0) {
            
    $caratteri 500;
        }

        
    $nuovo wordwrap($testo$caratteri"|");
        
    $nuovotesto explode("|"$nuovo);
        return 
    $nuovotesto[0] . "...";

    $preg è 0.
    ma io sono sicuro che nn è cosi e che il 300 caratter sta in un link (quindi nel tag <a....</a>).

  7. #7
    vi do la conferma:
    codice:
    SELECT SUBSTRING(articolo_testo, 1 , 300) FROM articoli WHERE articolo_id = 32
    
    
    
    
       Hanseboot Amburgo (Germania)</p>
    
    
    
       sab 29 ottobre, 2011 a dom 06 novembre, 2011</p>
    
    
    
       Nautica: Ingegneria nautica Canoe Diving Barche a motore Sport nautici</p>
    
    
    
       <a href="http://www.nfiere.com/salon-nautico-
    come vedete la query si interrompe in mezzo a un link.

  8. #8
    scusa prima avevo fatto casino con la formattazione...

    non devi metter $ultimo nella preg_match, devi mettere $testo...

    Codice PHP:
     $preg preg_match("#<a(.*?)</a>#i"$testo); 
    perché tu vuoi vedere se c'è un link nel testo che gli passi, non nell'ultimo carattere (come potrebbe!)

  9. #9
    ma nel testo può esserci anche più di un link.
    io vorrei vedere se l'ultimo carattere è dentro a un link.
    detta in parole povere: se l'ultimo carattere sta tra <a e </a>, allora fai questo.

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.