Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    [espressioni regolari] tutti i caratteri tranne uno

    ho difficoltà con un'espressione regolare

    ho scritto queste righe:

    Codice PHP:
    if(eregi("<a(.+)>(.+)<\/a>"$test$regs)) {
            
    $titolo $regs[2];
            echo 
    ' - '.$titolo.'
     '
    ;

    che con un link di questo genere:

    questo è un link

    mi tira fuori appunto: questo è un link (che è quello che vorrei)

    ora se ho un link fatto inq uesto modo:

    questo è un link

    ottengo solo: è un link

    perchè, giustamente, l'espressione regolare considera l'ultimo > individuato.

    la domanda a questo punto è: come faccio a dire all'espressione di prendere tutti i caratteri tranne > (nella parte rossa) ?

    if(eregi("<a(.+) >(.+)<\/a>", $test, $regs)) {
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    up
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [espressioni regolari] tutti i caratteri tranne uno

    Originariamente inviato da gasmor
    ho difficoltà con un'espressione regolare

    ho scritto queste righe:

    Codice PHP:
    if(eregi("<a(.+)>(.+)<\/a>"$test$regs)) {
            
    $titolo $regs[2];
            echo 
    ' - '.$titolo.'
     '
    ;

    che con un link di questo genere:

    questo è un link

    mi tira fuori appunto: questo è un link (che è quello che vorrei)

    ora se ho un link fatto inq uesto modo:

    questo è un link

    ottengo solo: è un link

    perchè, giustamente, l'espressione regolare considera l'ultimo > individuato.
    Esatto ... l'espressione .+ è "possessiva" cioè si "mangia" quanti caratteri il più possibile!!!

    Con eregi non credo che si possa fare molto, però puoi usare preg_match. Usa questo:
    Codice PHP:
    ...
    if(
    preg_match("/<a(.+?)>(.+)<\/a>/"$test$regs)) {
    ... 
    Il ? dopo .+ indica che il match deve essere "ungreedy", cioè non così "ingordo" di caratteri.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie mille, funziona

    anche se c'è un piccolo errore di distrazione che correggo per i posteri

    if(preg_match("/<a(.+?)>(.+)<\ /a>/", $test, $regs)) {

    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

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.