Don
Don

Reputation: 1570

Escape quote or special characters in array value

In my PHP code, I'm setting up an area for people to enter their own info to be displayed. The info is stored in an array and I want to make it as flexible as possible.

If I have something like...

$myArray[]['Text'] = 'Don't want this to fail';

or

$myArray[]['Text'] = "This has to be "easy" to do";

How would I go about escaping the apostrophe or quote within the array value?

Thanks

Edit: Since there is only a one to one relationship, I changed my array to this structure...

$linksArray['Link Name'] ='/path/to/link';
$linksArray['Link Name2'] ='/path/to/link2';
$linksArray['Link Name2'] ='/path/to/link3';

The plan is I set up a template with an include file that has these links in a format someone else (a less technical person) can maintain. They will have direct access to the PHP and I'm afraid they may put a single or double quote in the "link name" area and break the system.

Thanks again.

POSSIBLE SOLUTION:

Thanks @Tim Cooper.

Here's a sample that worked for me...

$link = "http://www.google.com";
$text = <<<TEXT
Don't you loving "googling" things
TEXT;
$linksArray[$text] = $link;

Upvotes: 3

Views: 9660

Answers (5)

user142162
user142162

Reputation:

Using a heredoc might be a good solution:

$myArray[]['Text'] = <<<TEXT

Place text here without escaping " or '

TEXT;

Upvotes: 1

Jordan Arsenault
Jordan Arsenault

Reputation: 7388

PHP will process these strings properly upon input. If you are constructing the strings yourself as you have shown, you can alternate between quotation styles (single and double)...as in:

$myArray[]['Text'] = "Don't want this to fail";
$myArray[]['Text'] = 'This has to be "easy" to do';

Or, if you must escape the characters, you use the \ character before the quotation.

$myArray[]['Text'] = 'Don\'t want this to fail';
$myArray[]['Text'] = "This has to be \"easy\" to do";

Upvotes: 1

Matt Beckman
Matt Beckman

Reputation: 5012

You can use the addslashes($str) function to automatically escape quotes.

You can also try htmlentities, which will encode quotes and other special values into HTML entities: http://php.net/manual/en/function.htmlentities.php

Upvotes: 0

simshaun
simshaun

Reputation: 21466

Unless you are letting users enter direct PHP code (you probably aren't), you don't have to worry about what they enter until you go to display it. When you actually display the info they enter, you will want to sanitize it using something like htmlentities().

Edit: I realize I may be misunderstanding your question. If so, ignore this! :)

Upvotes: 0

Sander Marechal
Sander Marechal

Reputation: 23216

If you really want to make i easy, use a separate configuration file in either INI or XML style. INI is usually the easiest for people to edit manually. XML is good if you have a really nested structure.

Upvotes: 0

Related Questions