正则表达式模式需要PHP-字符串和单词的混合
我需要一个特殊的正则表达式匹配的帮助。这是php。(编辑wordpress插件) 假设字符串是正则表达式模式需要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 此外,
"[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);