PHP - 对从来不能由用户定义的字符进行爆炸......如何?

SoL*_*oST -1 php string explode

好吧,我试图找到可以使用的,我可以从爆炸,因为文字是用户定义的,我需要能够从我有可能永远是一个值爆炸的字符或字符组,或者什么在文中.

我怎样才能做到这一点?

我正在尝试做的一个例子......

$value = 'text|0||#fd9||right';
Run Code Online (Sandbox Code Playgroud)

好,

文字是永远不会改变的东西.0,同样不可更改的 #fd9是用户定义的字符串,可以是用户输入的任何内容...并且右侧设置方向(左侧或右侧).

所以,我面临的问题是:如何explode("||", $value)有一个|| 在用户定义的部分内...示例:

$value = 'text|0||Just some || text in here||right';
Run Code Online (Sandbox Code Playgroud)

所以,如果用户放置|| 在字符串的用户定义部分,比这更混乱了.无论用户输入什么字符串,如何做到这一点?所以它应该返回以下数组:

array('text|0', 'Just some || text in here', 'right');
Run Code Online (Sandbox Code Playgroud)

我应该使用不同的角色来爆发吗?如果是这样,我可以使用什么,用户将无法输入到字符串,或者我如何检查并修复它?我可能不应该使用|| 在这种情况下,但我可以用什么来解决这个问题?

此外,该值最初将来自字符串,之后将来自数据库(一旦保存).

有任何想法吗?

dec*_*eze 5

如何将任意数据类型表示为字符串的问题总是与您正在描述的问题完全相反,并且已经以多种方式解决了.这个过程称为序列化,有许多序列化格式,从PHP本机serializeJSON到XML.所有这些格式都指定了如何将复杂数据结构呈现为字符串,包括如何在序列化值本身中使用序列化格式中具有特殊含义的字符的转义规则.


来自评论:

好吧,基本上,它是直截了当的.我已经概述了13个其他参数以及它们如何在位于此处的Dream Portal中工作:http://dream-portal.net/topic_122.0.html所以,你可以看到它们是如何适应的.我正在研究一个fieldset基本上使用所有这些参数的参数,而不是一些参数包含多个参数1.无论如何,希望链接可以帮助您,了解模块的XML文件:http://dream-portal.net/ topic_98.0.html查看info.xml部分,注意那里的<param>标签,底部是2个.

在我看来,更合理地使用XML会使这更容易.我没有详细阅读整个内容,而是像XML这样的XML元素

<param name="test_param" type="select">0:opt1;opt2;opt3</param>
Run Code Online (Sandbox Code Playgroud)

写得更有意义

<select name="test_param">
    <option default>opt1</option>
    <option>opt2</option>
    <option>opt3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

每个唯一的配置选项都可以拥有自己的唯一元素命名空间,其中包含自定义子元素,具体取决于您需要表示的参数类型.然后,不需要为每个可能的参数发明自定义迷你格式.它还允许您创建一个正式的XML模式(无论这对您有什么好处都是一个不同的主题,但至少您使用的是XML,因为它本意使用).