编辑: 我将收到用户输入,可以是任何字符串。 我只想标记那些具有特定结构的字符串。
// Flag
$subject = 'Name 1 : text / Name 2 : text';
// Flag
$subject = 'Name 1 : text / Name 2 : text / Name 3';
// Flag
$subject = 'Name 3 / Name 2 / Name 3';
// Do NOT flag
$subject = 'Name 1 : text, Name 2, text, Name 3';
// Do NOT flag
$subject = 'This is another string';
所以基本上标记每个至少有一个正斜杠的字符串。 这可以用正则表达式完成吗? 谢谢!
答案 0 :(得分:1)
我可能很好地误解了你想要的是什么,但我认为这可能是你想要的(没有正则表达式):
<?php
$subject = 'Name 1 : text / Name 2 : text / Name 3';
$subjectArray = array();
$explode = explode(' / ', $subject);
for ($i = 0; $i < count($explode); $i++) {
list($name, $text) = explode(' : ', $explode[$i]);
$subjectArray[] = array(
'name' => $name,
'text' => $text
);
}
print_r($subjectArray);
?>
将输出:
Array
(
[0] => Array
(
[name] => Name 1
[text] => text
)
[1] => Array
(
[name] => Name 2
[text] => text
)
[2] => Array
(
[name] => Name 3
[text] =>
)
)
答案 1 :(得分:0)
您需要清楚地定义same structure
的规则,但只是为了让您开始使用reges将适用于您的两个示例:
$re='#^Name\s+\d+\s*:\s*\w+\s*/\s*Name\s+\d+\s*:\s*\w+(?:\s*/\s*Name\s+\d+)?$#i';
if (preg_match($re, $str, $match))
print_r($match);