| | |
Replacing 2 characters with with preg_replace
Please support our PHP advertiser: PostgreSQL or MySQL? Compare and contrast the two most popular open source databases
Thread Solved
![]() |
Hi there
I'm using preg_replace to replace ' and " with a backslash in front of them so that I don't get problems with my MySQL INSERT queries. But at the moment I can only replace them with one charater as below:
At the moment that just replaces both ' and " with ' which isn't ideal. Can anyone tell me how I'd be able to replace them with the respective charater. (e.g. ' would be replaced with \' and " would be replaced with\")
I'm using preg_replace to replace ' and " with a backslash in front of them so that I don't get problems with my MySQL INSERT queries. But at the moment I can only replace them with one charater as below:
php Syntax (Toggle Plain Text)
$unedited = $_POST['content']; $content = preg_replace("/['|\"]/", "\'", $unedited);
At the moment that just replaces both ' and " with ' which isn't ideal. Can anyone tell me how I'd be able to replace them with the respective charater. (e.g. ' would be replaced with \' and " would be replaced with\")
Umm.. I am not sure about preg_replace. But you can do the same with str_replace!
Hope it helps!
Naveen
php Syntax (Toggle Plain Text)
<?php $txt="' is a single quote \" is a double quote.I want to replace ' with \' and \" with \" "; echo "Actual text: " .$txt."<br />"; $x=str_replace('"','\"',str_replace("'","\'",$txt)); echo "Replaced text: ". $x; ?>
Hope it helps!
Naveen
Ignorance is definitely not bliss!
*PM asking for help will be ignored*
*PM asking for help will be ignored*
you dont need str_replace inside str_replace etc etc.
use two arrays
this way you can have two arrays and no messy inner replacements inside replacements.
although nav33n may have shown you his way as at first it appears easier (both do the same trick).
use two arrays
PHP Syntax (Toggle Plain Text)
$your_txt = "Hello 'WORLD'"; $txt = array("'", "\""); $txt_replace = array("\'", "\\\""); $x=str_replace($txt, $txt_replace, $your_txt); echo $x;
this way you can have two arrays and no messy inner replacements inside replacements.
although nav33n may have shown you his way as at first it appears easier (both do the same trick).
When Autumn Falls [ http://www.whenautumnfalls.co.uk ] &&
Designdotworks [ http://www.designdotworks.co.uk ] Web / Graphic / Software Design
Designdotworks [ http://www.designdotworks.co.uk ] Web / Graphic / Software Design
... I'm not entirely sure why'd you write your own function when the built-in addslashes function works perfectly well.
GCS d- s+ a-->? C++(++++) UL+++ P+>+++ L+++ E--- W+++
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
N+ o K w++(---) O? !M- V PS+>++ PE+ Y+ PGP !t- 5? X- R tv+
b+>++ DI+ D G++>+++ e+ h+>++ r y+
PMs asking for help will not be answered, post on the forums. That's what they're there for.
•
•
Join Date: Jan 2008
Posts: 57
Reputation:
Solved Threads: 5
•
•
•
•
... I'm not entirely sure why'd you write your own function when the built-in addslashes function works perfectly well.
addslashes() is slightly different - it escapes a couple of extra characters (including '\' and NUL). However, these (especially \) need to be escaped anyway.
So, to fill in the original example...
PHP Syntax (Toggle Plain Text)
$unedited = $_POST['content']; $content = addslashes($unedited);
However, you might be looking to learn how to use preg_replace... so we'll go back to the original example.
You can use preg_replace() like Fungus did with str_replace - sending an array as the search and replacement parameters.
The problem with your example is that you're only presenting one thing for the replacement parameter - "\'".
In order to replace ' with \' and " with \" you need to do one of a few things - perform two preg_replaces (one for each replacement), use arrays within the preg_replace, or use a variable in the regex to print the quote based on what the search found. I'm not that good with regex, so I'm not sure if you can do that... but I think you can.
Anyhow, here's an example of how you could use arrays to perform the desired function with preg_replace.
PHP Syntax (Toggle Plain Text)
$string = "\"You're not very wise,\" said the wise man."; $string = preg_replace(array("/'/", '/"/'), array("\'", '\"'), $string); echo $string;
That appears to escape both the single and double quotes just fine.
Good luck,
- Walkere
All I can say is WOW. I have to admit that I'm somewhat of a noob to PHP and that addslashes function is the best thing since sliced bread
Thanks to all of you for your response and especially to you Walkere (extra rep for you
) for taking the time to give an example using pre_replace. Much appreciated.
Thanks to all of you for your response and especially to you Walkere (extra rep for you
) for taking the time to give an example using pre_replace. Much appreciated. ![]() |
Other Threads in the PHP Forum
- Previous Thread: Need help NEWSLETTER
- Next Thread: creating pdf in php
| Thread Tools | Search this Thread |
apache api array basic body broken cache cakephp class cms code computing confirm cron curl customizableitems database date date/time delete dynamic email error file filter folder form forum freelancing function functions gc_maxlifetime google header headmethod howtowriteathesis href htaccess html iframe image include ip javascript joomla limit link list login malfunction memmory memory menu method msqli_multi_query multiple mycodeisbad mysql navigation neutrality oop parameter parsing paypal pdf php phpmysql query question random recourse regex root script search select seo server sessions snippet soap source space sql static support! system table thesishelp trouble tutorial update upload url variable video web webdesign xml youtube






