I'd like to use any php function or whatever so that i can remove any HTML code and special characters and gives me only alpha-numeric output
$des = "Hello world] [*&^%$#@! it's me: and; love you.";
I want the output become Hello world it s me and love you
[just Aa-Zz-0-9-WhiteSpace]
I've tried strip_tags
but it removes only HTML codes
$clear = strip_tags[$des];
echo $clear;
So is there any way to do it?
Martijn
15.5k4 gold badges36 silver badges66 bronze badges
asked Aug 20, 2011 at 1:03
Reham FahmyReham Fahmy
4,80315 gold badges49 silver badges70 bronze badges
Probably better here for a regex replace
// Strip HTML Tags
$clear = strip_tags[$des];
// Clean up things like &
$clear = html_entity_decode[$clear];
// Strip out any url-encoded stuff
$clear = urldecode[$clear];
// Replace non-AlNum characters with space
$clear = preg_replace['/[^A-Za-z0-9]/', ' ', $clear];
// Replace Multiple spaces with single space
$clear = preg_replace['/ +/', ' ', $clear];
// Trim the string of leading/trailing space
$clear = trim[$clear];
Or, in one go
$clear = trim[preg_replace['/ +/', ' ', preg_replace['/[^A-Za-z0-9 ]/', ' ', urldecode[html_entity_decode[strip_tags[$des]]]]]];
answered Aug 20, 2011 at 1:07
9
Strip out tags, leave only alphanumeric characters and space:
$clear = preg_replace['/[^a-zA-Z0-9\s]/', '', strip_tags[$des]];
Edit: all credit to DaveRandom for the perfect solution...
$clear = preg_replace['/[^a-zA-Z0-9\s]/', '', strip_tags[html_entity_decode[$des]]];
answered Aug 20, 2011 at 1:06
Matt SteinMatt Stein
3,0441 gold badge18 silver badges34 bronze badges
1
All the other solutions are creepy because they are from someone that arrogantly simply thinks that English is the only language in the world :]
All those solutions strip also diacritics like ç or à.
The perfect solution, as stated in PHP documentation, is simply:
$clear = strip_tags[$des];
answered Feb 22, 2017 at 21:49
1
In a more detailed manner from Above example, Considering below is your string:
$string = 'This.. is hello world ! هذا هو مرحبا العالم! !@#$%^&&**[*]?:";p[]"/.,\|`~1@#$%^&^&*[[]908978867564564534423412313`1`` "Arabic Text نص عربي test 123 و,.m,............ ~~~ ٍ،]ٍْ}~ِ]ٍ}"; ';
Code:
echo preg_replace['/[^A-Za-z0-9 !@#$%^&*[].]/u','', strip_tags[$string]];
Allows:
English letters [Capital and small], 0 to 9 and characters !@#$%^&*[].
Removes:
All html tags, and special characters other than above
answered Dec 24, 2013 at 12:44
Aditya P BhattAditya P Bhatt
20.6k17 gold badges81 silver badges103 bronze badges
2
You can do it in one single line :] specially useful for GET or POST requests
$clear = preg_replace['/[^A-Za-z0-9\-]/', '', urldecode[$_GET['id']]];
answered Feb 6, 2014 at 20:08
nodwsnodws
92013 silver badges18 bronze badges
Here's a function I've been using that I've put together from various threads around the net that removes everything, all tags and leaves you with a perfect phrase. Does anyone know how to modify this script to allow periods [.] ? In other words, leave everything 'as is' but leave the periods alone or other punctuation like and ! or a comma? let me know.
function stripAlpha[ $item ]
{
$search = array[
'@]*?>.*?@si' // Strip out javascript
,'@]*?>.*?@siU' // Strip style tags properly
,'@@si' // Strip out HTML tags
,'@@' // Strip multi-line comments including CDATA
,'/\s{2,}/'
,'/[\s]{2,}/'
];
$pattern = array[
'#[^a-zA-Z ]#' // Non alpha characters
,'/\s+/' // More than one whitespace
];
$replace = array[
''
,' '
];
$item = preg_replace[ $search, '', html_entity_decode[ $item ] ];
$item = trim[ preg_replace[ $pattern, $replace, strip_tags[ $item ] ] ];
return $item;
}
answered May 9, 2015 at 23:22
ViktorViktor
4973 silver badges21 bronze badges
1
to allow periods and any other character just add them like so:
change: '#[^a-zA-Z ]#
' to:'#[^a-zA-Z .[]!]#
'
sandip
5239 silver badges24 bronze badges
answered Jan 28, 2016 at 0:04
preg_replace['/[^a-zA-Z0-9\s]/', '',$string]
this is using for removing special character only rather than space between the strings.
answered Apr 25, 2017 at 4:34
Remove all special character don't give space write in single line
trim[preg_replace['/ +/', ' ', preg_replace['/[^A-Za-z0-9 ]/', ' ',
urldecode[html_entity_decode[strip_tags[$string]]]]]];
Pang
9,192146 gold badges85 silver badges118 bronze badges
answered Jul 16, 2017 at 22:39