Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式模式需要PHP-字符串和单词的混合_Php_Regex - Fatal编程技术网

正则表达式模式需要PHP-字符串和单词的混合

正则表达式模式需要PHP-字符串和单词的混合,php,regex,Php,Regex,我需要一个特殊的正则表达式匹配的帮助。这是php。(编辑wordpress插件) 假设字符串是 "[youtube|sjdhskajxn|This is a string|This is also a string|44|55]" 我想提取 {0} -> youtube {1} -> sjdhskajxn {2} -> This is a string {3} -> This is also a string {4} -> 44 {5} -> 55 此外,

我需要一个特殊的正则表达式匹配的帮助。这是php。(编辑wordpress插件)

假设字符串是

"[youtube|sjdhskajxn|This is a string|This is also a string|44|55]"
我想提取

{0} -> youtube
{1} -> sjdhskajxn
{2} -> This is a string
{3} -> This is also a string
{4} -> 44
{5} -> 55
此外,要匹配的项目数也不会恒定。

使用函数

使用函数


如果要允许使用Unicode字符:

preg_match_all('/[\pL\pN\pZ]+/u', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
否则(仅ASCII),更简单:

preg_match_all('/[a-z0-9\s]+/i', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];

如果要允许使用Unicode字符:

preg_match_all('/[\pL\pN\pZ]+/u', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
否则(仅ASCII),更简单:

preg_match_all('/[a-z0-9\s]+/i', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];

只需使用explode($delimiter,$string);我想你需要用
符号。不过,这会留下括号。你是否需要能够以某种方式逃逸
或方括号,以便字符串中可以有一个
,如果需要的话?@Waygood这就是我开始编写插件的方式,但我正在使用的已经存在的插件有regex。不管怎样,我现在已经开始工作了。谢谢。只需使用explode($delimiter,$string);我想你需要用
符号。不过,这会留下括号。你是否需要能够以某种方式逃逸
或方括号,以便字符串中可以有一个
,如果需要的话?@Waygood这就是我开始编写插件的方式,但我正在使用的已经存在的插件有regex。不管怎样,我现在已经开始工作了。谢谢。
trim()
with
[]
str\u replace()
的替代品。它作用于字符串的末端,而不是整个字符串
trim()
[]
str\u replace()
的替代品。它适用于字符串的末端,而不是整个字符串,但如果需要将
或方括号作为包含文本的一部分,并带有转义字符,则它将不起作用。它可以正常工作,但如果需要将
或方括号作为包含文本的一部分,它将不起作用,我知道每个人都触及了答案的某个部分,所以谢谢大家。我知道每个人都触及了答案的某个部分,所以谢谢大家。
$raw = '[youtube|sjdhskajxn|This is a string|This is also a string|44|55]';

// remove brackets only at beginning/end
$st = preg_replace('/(^\[)|(\]$)/', '', $raw);

$parts = explode('|', $st);