-2

编辑:我将收到可以是任何字符串的用户输入。我只想标记那些具有特定结构的字符串。

// 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';

所以基本上标记每个至少有 1 个正斜杠的字符串。这可以用正则表达式完成吗?谢谢!

4

2 回答 2

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] => 
        )

)
于 2013-04-18T15:24:22.613 回答
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);
于 2013-04-18T15:13:49.420 回答