pasar - PHP elimina el carácter especial de la cadena
lista de etiquetas php (7)
¡Buen intento! Creo que solo tienes que hacer algunos pequeños cambios:
- Escape los corchetes (
[
y]
) dentro de la clase de caracteres (que también están indicados por[
y]
) - Escape del personaje de escape (
/
) en sí mismo - Además, hay una peculiaridad en la que
-
es especial: si se trata de dos caracteres, significa un rango, pero si es al principio o al final, significa el carácter literal.
Querrás algo como esto:
preg_replace(''/[^a-zA-Z0-9_%/[()./]///-]/s'', '''', $String);
Consulte http://docs.activestate.com/activeperl/5.10/lib/pods/perlrecharclass.html#special_characters_inside_a_bracketed_character_class si desea leer más sobre este tema.
Tengo problemas para eliminar caracteres especiales. Quiero eliminar todos los caracteres especiales excepto "() /.% - &", porque estoy configurando esa cadena como un título.
Edité el código del original (mira debajo):
preg_replace(''/[^a-zA-Z0-9_ -%][().][//]/s'', '''', $String);
Pero esto no funciona para eliminar caracteres especiales como: "''s", "", "â €", entre otros.
código original: (esto funciona pero elimina estos caracteres: "() /.% - &")
preg_replace(''/[^a-zA-Z0-9_ -]/s'', '''', $String);
¡Usted quiere reemplazar str , porque en cuanto a rendimiento es mucho más barato y aún se adapta a sus necesidades!
$title = str_replace( array( ''/''', ''"'', '','' , '';'', ''<'', ''>'' ), '' '', $rawtitle);
(A menos que esto sea todo sobre seguridad e inyección SQL, en ese caso, preferiría ir con una lista POSITIVA de caracteres PERMITIDOS ... aún mejor, seguir con rutinas probadas y comprobadas).
Por cierto, ya que el OP habló sobre el establecimiento de títulos: no reemplazaría los caracteres especiales con nada, sino con un espacio. Un espacio superficial es menos problemático que dos palabras pegadas ...
Tu punto coincide con todos los personajes. Escapelo (y los otros personajes especiales), así:
preg_replace(''/[^a-zA-Z0-9_ %/[/]/./(/)%&-]/s'', '''', $String);
Ver example .
/**
* nv_get_plaintext()
*
* @param mixed $string
* @return
*/
function nv_get_plaintext( $string, $keep_image = false, $keep_link = false )
{
// Get image tags
if( $keep_image )
{
if( preg_match_all( "//<img[^/>]*src=/"([^/"]*)/"[^/>]*/>/is", $string, $match ) )
{
foreach( $match[0] as $key => $_m )
{
$textimg = '''';
if( strpos( $match[1][$key], ''data:image/png;base64'' ) === false )
{
$textimg = " " . $match[1][$key];
}
if( preg_match_all( "//<img[^/>]*alt=/"([^/"]+)/"[^/>]*/>/is", $_m, $m_alt ) )
{
$textimg .= " " . $m_alt[1][0];
}
$string = str_replace( $_m, $textimg, $string );
}
}
}
// Get link tags
if( $keep_link )
{
if( preg_match_all( "//<a[^/>]*href=/"([^/"]+)/"[^/>]*/>(.*)/<//a/>/isU", $string, $match ) )
{
foreach( $match[0] as $key => $_m )
{
$string = str_replace( $_m, $match[1][$key] . " " . $match[2][$key], $string );
}
}
}
$string = str_replace( '' '', '' '', strip_tags( $string ) );
return preg_replace( ''/[ ]+/'', '' '', $string );
}
<?php
$string = ''`~!@#$%^&^&*()_+{}[]|//;:"< >,.?-<h1>You .</h1><p> text</p>''."''";
$string=strip_tags($string,"");
$string = preg_replace(''/[^A-Za-z0-9/s./s-]/'','''',$string);
echo $string = str_replace( array( ''-'', ''.'' ), '''', $string);
?>
preg_replace(''#[^/w()/.%/-&]#'',"",$string);
preg_replace(''/[^a-zA-Z0-9_ /-()//%-&]/s'', '''', $String);