4

i want to find certain part of the comments. following are some examples

/*
 * @todo name another-name taskID
 */

/* @todo name another-name taskID */

currently im using following regular expression

'/\*[[:space:]]*(?=@todo(.*))/i'

this returns following:

* @todo name another-name taskID
or
* @todo name another-name taskID */

how can i just get just @todo and names, but not any asterisks?

desired output

@todo name another-name taskID
@todo name another-name taskID
j08691
  • 204,283
  • 31
  • 260
  • 272
Basit
  • 16,316
  • 31
  • 93
  • 154

1 Answers1

1

Try this:

$str=<<<STR
/*
 * @todo name another-name taskID 1
 */

/* @todo name another-name taskID 2 */
STR;
$match=null;
preg_match_all("/\*[[:space:]]*(@todo[^(\*\/$)]*)/i",$str,$match,PREG_SET_ORDER);
print_r($match);

echos

Array
(
    [0] => Array
        (
            [0] => * @todo name another-name taskID 1

            [1] => @todo name another-name taskID 1

        )

    [1] => Array
        (
            [0] => * @todo name another-name taskID 2 
            [1] => @todo name another-name taskID 2 
        )

)

Not a perfect solution (notice the line-ending in $match[0][0]) though.

Passerby
  • 9,715
  • 2
  • 33
  • 50