2013-03-08 2 views
0

Я пишу программу на PHP, и мне нужно найти данные, находящиеся между двумя наборами символов, и преобразовать их в строку. НапримерPHP найти данные в символах

$main = "Hello, everyone, my name is (-Jack-)" 
$string = regex_function('(-', $main) #should return "Jack" 

Как я могу получить этот вывод, используя функцию регулярных выражений или что-то

+1

Проверено [любое из этих] (http://www.php.net/manual/en/ref.pcre.php)? – Passerby

ответ

1

Попробуйте это:

$main = 'Hello, everyone, my name is (-Jack-)'; 

preg_match_all('/\(\-(?P<name>.*)\-\)/', $main, $matches); 

echo "<pre>"; 
print_r($matches); 

echo $matches['name'][0]; 
+0

Отредактировано код, пожалуйста, проверьте его сейчас –

+0

Как насчет [этого] (http://codepad.viper-7.com/WuEqKj) случая? – hjpotter92

1

Функция известна как preg_match_all().

$main = "Hello, everyone, my name is (-Jack-)"; 
preg_match_all('/\(\-(?P<name>\w+)\-\)/', $main, $string); 
print_r($string); 

Образец продукции на codepad.


Ссылаясь на @Prasanth's comment; вот лучшее регулярное выражение.

$main = "Hello, everyone, my name is (-Jack stuff-) some more text (-John stuff-)"; 
preg_match_all('/\(\-(?P<name>[\s\w]+)\-\)/', $main, $string); 
print_r($string); 

Codepad ссылка.

+1

Но что, если текст '(-Jack Jack-)' он не будет соответствовать шаблону –

+0

Это хорошо +1 для этого –

Смежные вопросы