Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Str_ireplace

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    Str_ireplace

    Allora...
    mi trovo in una posizione abbastanza problematica, in quanto ho la necessità di utilizzare str_ireplace() per un replace case-insensitive.
    Solo che questa funzione è disponibile da php5, e il server che ospita il mio sito non lo ha.

    Come posso agire?

  2. #2
    Con una espressione regolare
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Non ci avevo pensato poichè le espressioni regolari sono tra quelle poche funzioni di base che non ho imparato.


    Ciao e grazie

  4. #4
    l'ho scritta adesso e non l'ho testata molto
    codice:
    if(!function_exists( 'str_ireplace' )) {
    	function str_ireplace($find, $replace, $str) {
    		$tmpfind = array(
    			'\\\','/','[',']','(',
    			')','*','+','-','?',
    			'^','$','.','|','{','}'
    		);
    		$tmpreplace = array(
    			'\\\\\','\/','\[','\]','\(',
    			'\)','\*','\+','\-','\?',
    			'\^','\$','\.','\|','\{','\}'
    		);
    		if(!is_array($find))
    			$find = array($find);
    		for($a = 0, $b = count($find); $a < $b; $a++)
    			$find[$a] = '/(?i)'.str_replace($tmpfind, $tmpreplace, $find[$a]).'/';
    		return preg_replace($find, $replace, $str);
    	}
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Grazie 1000!

    Vedrò se utilizzarla o meno.


    Codice PHP:
    ereg_replace("\040[^a-bA-b0-9]+(".$sigla.")[^a-bA-b0-9]+\040"$replace$stringa); 
    prima di 40 c'è '\0'

    io vorrei rimpiazzare "php"(valore di $sigla) con $replace

    vorrei evitare che venisse rimpiazzate cose tipo "sphp2", "phpH"...

    solo che questo pattern mi cancella una decina di caratteri che precedono " php "... come mai?

  6. #6
    Originariamente inviato da keratox
    solo che questo pattern mi cancella una decina di caratteri che precedono " php "... come mai?
    ereg ed eregi sono piu' lente e meno potenti delle pregs.

    Detto questo, ti ho scritto una funzione che dovrebbe fare esattamente quello che fa str_ireplace, perche' non usarla ?
    inoltre la puoi usare sia in php5 che in php4 poiche' nel 5 non creera' la funzione.

    Accetta array di valori come str_ireplace fa
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    In alternativa ti puoi scaricare php_compat
    http://pear.php.net/package/PHP_Compat per utilizzare alcune funzione di php5 su php4 tra cui c'è anche la str_ireplace...

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Ok userò quella, grazie!

    Cmq preg è per le espressioni regolari in perl, ed ereg per quelle di php ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    L'ultimissima cosa..
    come modifico il tuo script per far si' di sostituire tutte le parole che non abbiano lettere prima o dopo

    io avevo modificato così

    Codice PHP:
                $find[$a] = '[^a-bA-B]*(?i)'.str_replace($tmpfind$tmpreplace$find[$a]).'/[^a-bA-B]*'
    però non mi rimpiazza più niente

    cioe'... esempio con "php"
    /php = ok
    php/ = ok
    aphp = no
    phpZ = no
    php5 = ok


    Ciao

  10. #10
    Originariamente inviato da keratox
    Cmq preg è per le espressioni regolari in perl, ed ereg per quelle di php ?
    no, preg è per le espressioni regolari, punto

    ereg ed eregi non so nemmeno perchè esistono





    Originariamente inviato da keratox
    come modifico il tuo script per far si' di sostituire tutte le parole che non abbiano lettere prima o dopo
    aspetta , tu mi hai chiesto una funzione come str_ireplace ... con quella che ti ho postato puoi fare quello che fa str_ireplace ... e non mi risulta che str_ireplace accetti patterns per pregs ... se devi usare patterns devi usare preg e non str_ireplace ... questo avresti dovuto farlo anche prima su php5 ...
    http://it2.php.net/manual/it/function.str-ireplace.php
    Questa funzione restituisce una stringa od una matrice con tutte le occorrenze di search in subject (non distinguendo tra maiuscole e minuscole) sostituite con il valore replace Se non occorrono particolari regole di sostituzione si dovrebbe utilizzare questa funzione anziché eregi_replace() o preg_replace() con il parametro i.
    Quindi forse dovresti prima capire cosa ti serve fare ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.