0

以下をテキストボックスに入れたとしましょう:

1|[Guangzhou Evergrande](//www.gzevergrandefc.com/)|6|5-1-0|+15|**16**
2|[Shandong Luneng](//www.lunengsports.com/)|7|5-1-1|+7|**16**
3|[Qingdao Jonoon](//www.zhongnengfc.com/)|7|4-3-0|+4|**15**
4|[Beijing Guoan](//www.fcguoan.com/)|7|3-3-1|+2|**12**

Enter キーを押すと、[and](andの間にあるものが取得され、次の)ように新しい行に挿入されます。

if ($name == "NAME_HERE") $name = "[".$name."](URL_HERE)";

私はpreg_matchこのパターンを実行して使用しようとしました:$pattern = '/^[/';そして$pattern_end = '/^]/';名前のために-テストするjsut-しかし、私はそれを動作させることができません....

これが私がこれまでに持っているものです:

$string = '1|[Guangzhou Evergrande](//www.gzevergrandefc.com/)|6|5-1-0|+15|**16**';
$pattern =  '/\[(.*?\)].*?\((.*?)\)/';
$replacement = 'if ($name == "{1}") $name = "[".$name."]({2})";';
echo preg_replace($pattern, $replacement, $string);
4

2 に答える 2

2

あなたのパターンは

 '/\[(.*?)\]\((.*?)\)/' 

[ ] と ( ) は特殊文字であるためです。preg_match_all() 関数を使用する

preg_match_all を使用すると、サブマッチ (サブパターン) に () を入れることができます

<?php

$string = '1|[Guangzhou Evergrande](//www.gzevergrandefc.com/)|6|5-1-0|+15|**16**';
$matches = array();
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $string, $matches);

var_dump($matches);
?>
于 2013-04-29T21:12:03.693 に答える